另一个:线程“main”java.lang.NoClassDefFoundError中的异常

时间:2012-01-24 16:23:09

标签: java

我有一个共同的问题,但常见的解决方案似乎对我不起作用。

我在当前目录中有一个名为test.java的文件,其中包含myclasses目录中的其他类文件。即如果我输入

ls:
myclasses  test.java

我输入:

  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。

错误在哪里?

3 个答案:

答案 0 :(得分:2)

确保test.java包含public static void main方法。

此外,如果您的课程在myclasses内,您应该java myclasses.test,我相信

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

java -cp . test