Eclipse 中突然出现 NoClassDefFoundError(而且只有在那里)
Suddenly NoClassDefFoundError in Eclipse (and only there)
将我在 eclipse (Mars.2) 中的项目(只是简单的 Java 1.8,没什么特别的)转换为 Maven(右键单击项目 => 配置 => Maven 项目)后,突然我可以't 运行 以前一直有效的常用 类,收到此消息:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/lang3/StringUtils
at eas.veryFastPDF.script.RepresentableDefault.<init>(RepresentableDefault.java:169)
at eas.veryFastPDF.script.RepresentableDefault.<init>(RepresentableDefault.java:1336)
at eas.veryFastPDF.script.RepresentableDefault.<clinit>(RepresentableDefault.java:1336)
at eas.veryFastPDF.HelpTexts.<clinit>(HelpTexts.java:525)
at eas.GlobalVariables.<clinit>(GlobalVariables.java:52)
at eas.plugins.PluginFactory.deserializePlugins(PluginFactory.java:220)
at eas.plugins.PluginFactory.loadPluginsFromFile(PluginFactory.java:127)
at eas.plugins.PluginFactory.<clinit>(PluginFactory.java:118)
at eas.startSetup.ParCollection.complete(ParCollection.java:1304)
at eas.startSetup.Starter.main(Starter.java:1924)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.lang3.StringUtils
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)
... 10 more
如果我注释掉需要StringUtils的部分,其他引用的库也会导致同样的错误。问题 类 一直存在于构建路径中引用的 JAR 中,并且没有编译时错误。
一些更奇怪的事情:
- 切换回旧的非 Maven 版本不起作用。
- 项目清理不起作用。
- 项目的清理新签出不起作用。
- 即使安装新的 Eclipse 版本(Neon.2 - 无论如何都要到期)也不起作用。
- 运行 在 eclipse 之外使用命令行确实有效!
- 编辑:现在我什至删除并重新安装了 Java - 仍然无法正常工作。
这到底是怎么回事??
编辑:我显然检查了建议的 "duplicate" 问题的所有答案,但它们不起作用。请不要标记为重复 - 它不是!
这就是最终(几个小时后)对我有用的东西:
我删除了工作区文件夹中存储的所有 eclipse 内容 - 更准确地说,基本上是每个以点开头的文件夹。 (可能只有 .metadata 文件夹就足够了,但我没有勇气更深入地研究它。)
显然,关于类路径的某些内容永久存储在工作区中,因此切换回早期版本并没有解决我的问题。
只是一个警告:这个解决方案确实有效,但是像这样清理工作区会让 eclipse 忘记几乎所有的事情!
将我在 eclipse (Mars.2) 中的项目(只是简单的 Java 1.8,没什么特别的)转换为 Maven(右键单击项目 => 配置 => Maven 项目)后,突然我可以't 运行 以前一直有效的常用 类,收到此消息:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/lang3/StringUtils
at eas.veryFastPDF.script.RepresentableDefault.<init>(RepresentableDefault.java:169)
at eas.veryFastPDF.script.RepresentableDefault.<init>(RepresentableDefault.java:1336)
at eas.veryFastPDF.script.RepresentableDefault.<clinit>(RepresentableDefault.java:1336)
at eas.veryFastPDF.HelpTexts.<clinit>(HelpTexts.java:525)
at eas.GlobalVariables.<clinit>(GlobalVariables.java:52)
at eas.plugins.PluginFactory.deserializePlugins(PluginFactory.java:220)
at eas.plugins.PluginFactory.loadPluginsFromFile(PluginFactory.java:127)
at eas.plugins.PluginFactory.<clinit>(PluginFactory.java:118)
at eas.startSetup.ParCollection.complete(ParCollection.java:1304)
at eas.startSetup.Starter.main(Starter.java:1924)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.lang3.StringUtils
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)
... 10 more
如果我注释掉需要StringUtils的部分,其他引用的库也会导致同样的错误。问题 类 一直存在于构建路径中引用的 JAR 中,并且没有编译时错误。
一些更奇怪的事情:
- 切换回旧的非 Maven 版本不起作用。
- 项目清理不起作用。
- 项目的清理新签出不起作用。
- 即使安装新的 Eclipse 版本(Neon.2 - 无论如何都要到期)也不起作用。
- 运行 在 eclipse 之外使用命令行确实有效!
- 编辑:现在我什至删除并重新安装了 Java - 仍然无法正常工作。
这到底是怎么回事??
编辑:我显然检查了建议的 "duplicate" 问题的所有答案,但它们不起作用。请不要标记为重复 - 它不是!
这就是最终(几个小时后)对我有用的东西:
我删除了工作区文件夹中存储的所有 eclipse 内容 - 更准确地说,基本上是每个以点开头的文件夹。 (可能只有 .metadata 文件夹就足够了,但我没有勇气更深入地研究它。)
显然,关于类路径的某些内容永久存储在工作区中,因此切换回早期版本并没有解决我的问题。
只是一个警告:这个解决方案确实有效,但是像这样清理工作区会让 eclipse 忘记几乎所有的事情!