poe*_*ons 1 java cmd exception javac noclassdeffounderror
我正在尝试从Windows的命令行运行一个非常简单的一个类"Hello World"程序.
该.java文件位于"C:\ Users\UserName\Desktop\direcName".包是deem,类名是test.
我可以cd到目录并从那里使用编译它javac test.java,这完全正常.但是,当我尝试使用以下命令运行它时:
java test或者java -classpath directory test还是java -cp . test
会抛出"异常的线程main java.lang.NoClassDefFoundError: test (wrong name: deem/test).
如果我使用java deem.test它说:Error, could not find or load main class deem.main
如何修复异常并让我的程序运行?
谢谢
这是从命令行运行Java程序的"常见初学者错误"的变体.
java test或java -classpath目录test或java -cp.测试它抛出"线程主java.lang.NoClassDefFoundError:test中的异常(错误的名称:deem/test).
JVM实际上告诉你在搜索路径上找到"test.class",但是当它读取类文件时,它得出结论该文件应该是"./deem/test.class"或"directory/deem /" test.class"...取决于你实际使用的"-cp"/" - classpath"参数
如果我使用java deem.test它说:错误,无法找到或加载主类deem.main
现在告诉你它找不到"deem/main.class".
请注意,您现在已经告诉它要查找名为"deem.main"的类而不是"test"或"deem.test".(或者你可能只是在那里错误地转录了一些东西.)
规则非常简单:
java作为选项后的第一个参数.(不是简单的类名. 不是 ".class"文件名.不是入口点方法的名称.)java命令可以
foo.bar.baz.MyClass映射到类文件的相对路径名(例如映射到foo/bar/baz/MyClass.class)....是类路径,那么./foo/bar/baz/MyClass.class.public static void main(String[])入口点方法.所以如果 ......
deem.test; 即test该类在包中deem,AND./deem/test.class,AND那 java -cp . deem.test应该工作.