代码:
//package Foo;
public class Bar{
public static void main(String[] argv){System.out.println("test");}
}
现在,当我编译并运行它时,代码可以工作但是,当我取消第一行的注释时,当我试图用
运行它时,它会抛出一个异常java Bar
会抛出以下语句:
java.lang.NoClassDefFoundError: Bar (wrong name: Foo/Bar)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
Exception in thread "main"
当我尝试这样运行时:
java Foo。酒吧
我将得到这个:
Error: Could not find or load main class Foo.Bar
当我执行以下操作时将生成相同的输出:
java -classpath ./ Foo.Bar
即使当我指定完整的路径到当前路径,我认为它不应该是必要的,但我这样做,我仍然得到的消息:"无法找到或加载…"。
当您添加Foo
包时,您还应该更改文件夹结构:
//before:
./Bar.java
//after adding Foo package:
./Foo/Bar.java
然后按如下方式运行:
./java Foo.Bar
(注意:你应该在.
目录,而不是./Foo
)
检查:http://docs.oracle.com/javase/tutorial/java/package/managingfiles.html
引用上面的链接:
//in the Rectangle.java file package graphics; public class Rectangle { ... }
然后,将源文件放在一个目录中,该目录的名称反映了该类型所属的包的名称:
.....graphicsRectangle.java