如何在Eclipse中清除项目后从java.lang.ClassNotFoundException中恢复

时间:2012-07-20 18:09:14

标签: eclipse

我刚做了一个项目......干净然后自动无效。

Exception in thread "main" java.lang.NoClassDefFoundError: adventure/Main
Caused by: java.lang.ClassNotFoundException: adventure.Main
    at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: adventure.Main. Program will exit.

我可以构建但是在eclipse中没有构建的输出,他们认为你不能只是右击文件并选择编译就有一些优势......

为什么他们让Eclipse能够进入这种无法管理的状态?这个州有什么优势?如果项目的这种状态没有优势,为什么可能呢?

除了尝试使用我的构建路径能够生成可运行的JAr之外,我没有做任何异常,因为eclipse甚至无法正确打包jar。

该类的代码无法在此处显示,因为无论如何都找不到它。

更新

我可以通过执行“全新的”SVN签出来重现此错误然后处理项目,并且一旦我使用“功能”清理,那么eclipse会自动销毁我的工作并使得无法继续项目只是因为我使用Eclipse是世界上最笨的IDE,因为他们对开发人员有一个十年,这无法像编译一样执行基本功能。

2 个答案:

答案 0 :(得分:1)

我必须同意这个问题不太可能是由Eclipse引起的。从来没有,假设它是:

Eclipse以这种方式工作,因为它使用autobuilder而不是事后编译。就错误捕获而言,这可能很好,但对于大型项目也可能存在问题。至于为什么没有提供简单的手动编译,Eclipse试图隐藏编译等开发步骤,并且可能没有考虑可能发生此类错误的情况。

尝试关闭autobuild功能并重新打开: 窗口>偏好>一般>工作区>自动构建

如果不起作用: 备份包含该类的文件,然后将其删除。从备份恢复。

其中任何一个都应该强制Eclipse重新编译所有内容。

如果仍然无法解决您的问题,那么错误可能不是来自Eclipse,它只是在您做了任何清理后都没有机会找到它。值得庆幸的是,通过强制Eclipse重新编译,它应该指出错误。

答案 1 :(得分:0)

也许这不是“理想”,但在这样的问题中, 在Eclipse中,我会遇到困难:项目清理干净,然后自动构建