我提供了一些源代码示例,我想测试一些函数。 不幸的是,我在执行程序时遇到了问题:
11:41:31 [linqus@ottsrvafq1 example]$ javac -g test/test.java
11:41:52 [linqus@ottsrvafq1 example]$ java -classpath . test/test
Exception in thread "main" java.lang.NoClassDefFoundError: test/test (wrong name: test)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
Could not find the main class: test/test. Program will exit.
11:42:57 [linqus@ottsrvafq1 example]$
我能做什么?
答案 0 :(得分:4)
我对Java没有太多经验,但据我所知,您应该使用完全限定的Java类名来运行该文件:
// Assuming that the class is called "test" and is not in any package
java -classpath test test
// If "test" is actually in the package "test" :
java -classpath . test.test
答案 1 :(得分:1)
使用您需要使用的java命令运行类。而不是/
假设test
是javac命令建议的名为test
的包中的类。
E.g。
java -classpath . test.test
此外,您应该遵循Java命名约定并命名以大写字母开头的类。它应该是test.Test
,以便更容易区分类和包
使用javac
时编译是正确的/应该使用答案 2 :(得分:1)
您需要将其运行为:
java -classpath test test
第一个test
是您的.class
文件所在目录的名称。第二个test
是您要运行的Java类的名称。通常你需要在这里指定完整的包名,但由于你的类在全局包中,所以只需在这里传递test
即可。
答案 3 :(得分:0)
将代码读入IDE(eclipse,intellij,netbeans),它可能会突出显示问题。
您的代码似乎缺少一些简单的东西(即包名称)。
答案 4 :(得分:0)
可能是个案问题,您的班级名称因您的命令而异。
假设您的班级名称为Test
,并且您在命令行中提供了test
。
http://javarevisited.blogspot.in/2011/06/noclassdeffounderror-exception-in.html