【问题标题】:Suddenly NoClassDefFoundError in Eclipse (and only there)Eclipse 中突然出现 NoClassDefFoundError (而且只有那里)
【发布时间】:2017-06-19 14:41:43
【问题描述】:

在 Eclipse (Mars.2) 中将我的项目(只是普通的 Java 1.8,没什么特别的)转换为 Maven(右键单击项目 => 配置 => Maven 项目)后,突然我无法运行通常的类以前一直有效,收到此消息:

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$1.<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 - 仍然无法正常工作。

到底发生了什么事??

编辑:我显然检查了建议的“重复”问题的所有答案,但它们不起作用。请不要标记为重复 - 它不是!

【问题讨论】:

  • 在命令行中在eclipse之外运行时,您之前是否也使用maven编译过?或者你只是运行你的主类?
  • 不,我使用这样的普通 Java 命令:java -Xmx15000M -cp "./*;." eas.startSetup.Starter
  • 您的问题必须与某些 jar 未正确添加到源代码文件夹中确实存在的类路径有关。首先检查 commons-lang jar 是否存在。
  • 这不是重复的 - 清洁对我不起作用。

标签: java maven noclassdeffounderror


【解决方案1】:

这就是最终(几个小时后)对我有用的方法:

我删除了 eclipse 存储在工作区文件夹中的所有东西 - 更准确地说,基本上每个文件夹都以点开头。 (可能只有 .metadata 文件夹就足够了,但我没有勇气更深入地研究它。)

显然,有关类路径的某些内容永久存储在工作区中,因此切换回早期版本并不能解决我的问题。

只是一个警告:这个解决方案确实有效,但是像这样清理工作区会让 eclipse 几乎忘记所有事情!

【讨论】:

    猜你喜欢
    • 2023-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-18
    • 1970-01-01
    • 2015-07-28
    • 2012-01-20
    相关资源
    最近更新 更多