首页 > 解决方案 > 运行 Jar 时出现 NoClassDefFoundError

问题描述

我有这个问题。当我在 Intellij 中运行我的代码时,它工作正常,但如果我做一个工件并构建 jar,它就不起作用。我认为它是由外部库引起的。这是我的输出:

Exception in thread "main" java.lang.NoClassDefFoundError: com/mindfusion/scheduling/Calendar
        at GUI.<init>(GUI.java:75)
        at Logfiles.main(Logfiles.java:13)
Caused by: java.lang.ClassNotFoundException: com.mindfusion.scheduling.Calendar
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:606)
        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:168)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
        ... 2 more

我知道它是哪个类,但我不知道如何解决问题。我真的只是一个初学者。你能帮我解释一下吗?谢谢

编辑:

在我使用提取的库构建工件后,出现此错误:错误:发生 JNI 错误,请检查您的安装并重试线程“main”中的异常 java.lang.SecurityException:Manifest 主要属性的签名文件摘要无效

标签: javajarnoclassdeffounderror

解决方案


此错误仅表示 jar 中不存在类文件。

一种可能的解决方案是您可以下载用于查看 jar 的jd-gui 。您可以使用它来检查该类是否存在。

另一个解决方案是您可以使用这个简单的命令 grep 搜索 jar 中的类。

grep -l "<class-name>" <jar-name>.jar

如果 jar 文件中不存在该类。您可以使用 jar 命令添加类。

jar -cvf <jar-absolute-location> <class-path>
eg : jar -cvf GUI.jar com.mindfusion.scheduling.Calendar

推荐阅读