为什么在线程"main"中出现异常java.lang.NoClassDefFoundError:?

Rom*_*man 7 java eclipse classnotfoundexception

我通过Eclipse运行我的软件.昨天一切都很好.我没有对代码进行更改,但今天,当我尝试再次运行时,我收到以下错误消息:

Exception in thread "main" java.lang.NoClassDefFoundError: coloredtrails/CTListener
    at test.DemoPlayer1.createAndShowGUI(DemoPlayer1.java:23)
    at test.DemoPlayer1.main(DemoPlayer1.java:39)
Caused by: java.lang.ClassNotFoundException: coloredtrails.CTListener
    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)
    ... 2 more
Run Code Online (Sandbox Code Playgroud)

为什么不看课?可能是什么原因?我该如何解决这个问题?

Jes*_*per 9

A NoClassDefFoundError(几乎)总是意味着您的类路径是错误的.确保您的类路径包含coloredtrails包的基目录.(当然,还要确保文件coloredtrails\CTListener.class确实存在).

从命令行运行时:

您可以通过设置CLASSPATH环境变量来设置类路径,或者在运行程序时使用命令行上的-cp-classpath选项指定它.例如:

java -cp C:\MyProject\classes coloredtrails.CTListener
Run Code Online (Sandbox Code Playgroud)

编辑 - 查看堆栈跟踪并URLClassLoader在那里查看让我觉得您正在尝试运行Java applet.要了解如何正确部署applet,以便可以找到applet所需的所有类,请参阅本教程:部署Applet.


小智 6

有时,我的Eclipse(MacOSX上的Indigo)会这样做,特别是如果我做更改(删除文件,移动它们)直接到filsystem上的项目结构.

基本上,eclipse不能再找到源文件夹了,所以他不编译源代码但是无论如何都试图运行它(所有这些都没有警告或对问题的引用).

要修复它,请从构建路径中删除源文件夹(=右键单击包浏览器中项目下的src文件夹,然后选择"Build-path->从构建路径中删除".然后再次添加它(=右键单击包浏览器中项目下的文件夹,然后选择"添加到构建路径".这使得src文件夹再次对编译器"可见"并修复问题.