我通过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
为什么不看课?可能是什么原因?我该如何解决这个问题?
答案 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文件夹再次对编译器“可见”并修复了问题。