还有一个:线程中的异常;“主要”;java.lang.NoClassDefFoundError

还有一个:线程中的异常;“主要”;java.lang.NoClassDefFoundError,java,Java,我有一个共同的问题,但共同的解决方案似乎不适合我 我在当前目录中有一个名为test.java的文件,其他类文件在myclasses目录中。也就是说,如果我打字 ls: myclasses test.java I类型: javac test.java 一切都很好 当我尝试执行test.class,然后键入: java test 我得到: Exception in thread "main" java.lang.NoClassDefFoundError: test (wrong na

我有一个共同的问题,但共同的解决方案似乎不适合我

我在当前目录中有一个名为test.java的文件,其他类文件在myclasses目录中。也就是说,如果我打字

ls:
myclasses  test.java
I类型:

  javac test.java
一切都很好

当我尝试执行test.class,然后键入:

  java test
我得到:

Exception in thread "main" java.lang.NoClassDefFoundError: test (wrong name: myclasses/test)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
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:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
Could not find the main class: test.  Program will exit.
我猜这意味着java找不到test.class文件。但是为什么呢?文件在当前目录中,所有类都在myclasses目录中。我尝试了不同的标志组合(-cp,-d-sourcepath),并将test.class移到了各个目录中


错误在哪里?

确保
test.java
包含
publicstaticvoidmain
方法


另外,如果您的类在
myclasses
中,您应该
javamyclasses.test
,我相信

除了上述内容之外,还要确保在.java文件中没有声明包名(
myclasses
)。

您应该指定用于搜索类的类路径

java -cp . test

类名区分大小写。检查一下。再次执行
ls
命令并查看
.class
文件的名称。还要确保该类是公共类。与ant的连接是什么?作为一个侧节点,java类按照惯例应该是大写的。您是如何定义类路径的?你试过java-cp./myclasses测试吗?(我假设类的大小写与文件名“test.java”匹配)你能发布你的test.java代码吗?是的,test.java有公共静态void main,不,它不在MyClass内。不,它是
java MyClass.test
(点而不是斜杠)。
java
可执行文件接受类名,而不是文件名。thanx,再好不过了,它是完美的!但是为什么javac把我的类测试放在myclasses目录中呢?