【问题标题】:Throwing java.lang.ClassNotFoundException even if the class exists in jar file即使类存在于 jar 文件中,也会抛出 java.lang.ClassNotFoundException
【发布时间】:2012-08-06 16:49:00
【问题描述】:

我不明白为什么在运行 jar 文件时会出现此错误:

线程“主”java.lang.NoClassDefFoundError 中的异常: net/sf/mzmine/main/MZ mineModulesList at net.sf.mzmine.main.MZmineCore.main(MZmineCore.java:100) 原因: java.lang.ClassNotFoundException: net.sf.mzmine.main.MZmineModulesList

它说没有找到MZmineModulesList 类,但它存在于此路径中。可能是我在将类写入 jar 文件时做错了什么?

我想补充一点,这是在我用更新版本替换 MZmineModuleList 文件后出现的。我所做的:我从 Jar 中提取文件并添加了我的新类,并且我将旧的 MZmineModuleList 类替换为新的类,其中添加了几行代码。也许当我使用 java.util.jar 的方法写入 jar 文件时,我错过了什么?

【问题讨论】:

标签: java exception jar


【解决方案1】:

如果类的静态代码块中有错误,则可能会出现NoClassDefFoundError

【讨论】:

    【解决方案2】:

    这个类可能是模糊的。如果一个类可以从多个类加载器中加载,也可能会引发此错误。

    【讨论】:

      【解决方案3】:

      如果您使用 IDE 或其他工具为您构建所有内容,请检查以确保它包含 jar 中的所有类。我见过没有包含所有类文件的 Eclipse IDE 导出 jar。如果是这种情况,只需将类文件放入 jar 中。

      【讨论】:

      • 我正在使用 java 代码读取 jar 文件的所有条目并将文件写入另一个 jar 文件,然后通过创建新条目将新更新的类添加到这个新 jar 文件中
      猜你喜欢
      • 2013-08-21
      • 2011-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-17
      • 2020-07-20
      • 2018-07-18
      • 1970-01-01
      相关资源
      最近更新 更多