即使jar文件中存在类,也会抛出java.lang.ClassNotFoundException

时间:2012-08-06 16:49:01

标签: java exception jar

我无法理解运行jar文件时出现此错误的原因:

  

线程“main”中的异常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文件时,我错过了什么?

3 个答案:

答案 0 :(得分:1)

如果类的静态代码块中存在错误,则可能发生NoClassDefFoundError

答案 1 :(得分:0)

这堂课可能很神奇。如果可以从多个类加载器加载类,则也可能抛出此错误。

答案 2 :(得分:0)

如果您使用IDE或其他东西为您构建一切,请检查以确保它包含jar中的所有类。我已经看到了Eclipse IDE导出jar,但没有包含所有的类文件。如果是这种情况,只需将类文件放在jar中即可。