当前位置: 首页 > 面试题库 >

.java文件中的软件包使类文件不可用

苗阳
2023-03-14
问题内容

自从我上一次完成Java以来​​已经太久了,我不记得为什么会发生以下情况:

给定由标准Maven项目创建的文件,如下所示:Maven教程

package com.mycompany.app;

/**
 * Hello world!
 *
 */
public class App 
{
    public static void main( String[] args )
    {
        System.out.println( "Hello World!" );
    }
}

即使不是使用Maven而是使用标准javac可执行文件进行编译,也将生成没有错误的类文件。尝试运行类文件,您会收到此错误:

Exception in thread "main" java.lang.NoClassDefFoundError: App (wrong name: com/mycompany/app/App)

删除package命令,再次编译即可运行。为什么是这样?我正在运行JDK 1.6.0_21 btw。


问题答案:

为该类创建包之后,您必须做的一件事就是创建嵌套的子目录,以表示该类的包层次结构。在您的情况下,程序包名称为“
com.mycompany.app”,因此App.class(已编译的App.java文件)应位于“ com / mycompany /
app”子目录中。不过,源文件位于何处都没有关系。例如,我已复制您的文件并执行以下操作:

$ ls
App.java
$ javac App.java 
$ ls
App.class       App.java
$ mkdir -p com/mycompany/app
$ mv App.class com/mycompany/app/
$ java com.mycompany.app.App
Hello World!
$

请阅读有关Java软件包的Wikipedia页面以获取更多信息。您还可以查看以下链接:

  • Java包教程
  • Java包教程
  • Oracle关于软件包的注释

祝好运!



 类似资料:
  • If builders built buildings the way programmers wrote programs, then the first woodpecker that came along would destroy civilization. — Gerald Weinberg 在本章中,我们将学习如下内容: 为配置文件添加配置行 使用 Augeas 自动修改配置文件 使用

  • 问题内容: 我对mvc4捆绑器有一个奇怪的问题,不包括扩展名为.min.js的文件 在我的BundleConfig类中,我声明 我认为 当它渲染时,它只会渲染 如果我将jquery.tmpl.min.js重命名为jquery.tmpl.js(并相应地更新捆绑软件中的路径),则两个脚本均正确呈现。 是否有一些配置设置导致其忽略“ .min.js”文件? 问题答案: 我最初发布的解决方案是有问题的(很

  • 问题内容: 如何在中使用模块的本地版本。例如,在我的应用中,我安装了coffee-script: 这会将其安装在中,coffee命令在中。当我在项目的主文件夹中时,是否可以运行此命令?我想我正在寻找类似于捆扎机中的东西。基本上,我想指定一个咖啡脚本的版本,参与该项目的每个人都应该使用。 我知道我可以添加该标志以在全球范围内安装它,这样咖啡在任何地方都可以正常工作,但是如果我想每个项目使用不同版本的

  • 问题内容: 我想拥有一个jar文件,在其中只能访问API包。所有其他包(包含实现)都不能被另一个jar(也不能由任何其他类)访问。 可能吗 ? 如果是,怎么办? 问题答案: 当前计划用于Java 8(2012?)的是JSR 294 。该JSR将更好的模块化语言构造引入Java。 如今,实现可以划分为多个程序包。这种实现的各个子部分之间必须比与周围的软件环境更紧密地耦合在一起。如今,设计人员被迫将实

  • 我使用这段代码,它完美地创建了zip文件,例如我有一个文件夹 SD卡/音乐,当我创建xxx时。它创建的zip文件。zip文件包括音乐/歌曲以及其中的一些子文件夹 但我想排除“音乐”中的主文件夹。压缩文件,并希望它直接开始,包括所有的歌曲和它的子文件夹,如何做到这一点 我使用这种方式,但在压缩时也使用主文件夹名称 有人帮忙吗谢谢 到目前为止,这一直很棘手,对我来说,现在没有办法工作:/

  • 问题内容: 当我将其作为a的一部分并尝试从cmd运行它时,我不断收到错误消息。 这是先使用后再使用java 的代码: 然后无效的代码: 在尝试通过命令运行程序后给了我这个错误: 到目前为止,这是我尝试过的操作: 请记住,返回没有错误,只需删除即可解决问题。有时在其他情况下,我会收到一条错误消息,提示找不到主类文件或类似的内容。 我究竟做错了什么? 问题答案: 假设您在中,并且在中,然后键入: