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

时间:2011-05-25 12:16:52

标签: 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

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

2 个答案:

答案 0 :(得分:9)

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

从命令行运行时:

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

java -cp C:\MyProject\classes coloredtrails.CTListener

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

答案 1 :(得分:6)

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

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

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