在执行我的项目的 JAR 文件后,我得到了 NoClassDefFoundError。java -jar myproject.jar
使用 Eclipse 进行调试工作正常,但是自从我安装了 JDK 1.7 以来,每当我使用 windows 命令时都会出现此错误。
使用 Java 1.6 运行良好。
这是错误日志:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/log4j/Layout
at program.Main.main(Main.java:20)
Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Layout
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
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)
... 1 more
我对此进行了谷歌搜索,但找不到正确的解决方案。
我已经做了什么:-卸载 Java 1.7,安装 1.6 -检查类路径 -在另一台计算机上尝试(在从中卸载 Java 1.7 之后)-创建一个空项目,并引用 log4j 库 => 同样的问题
这是类路径文件:
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con"path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
<classpathentry kind="lib" path="lib/RXTXcomm.jar"/>
<classpathentry kind="lib" path="lib/log4j-1.2.15.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>
你知道我还应该做什么吗?
谢谢,
尼尔斯
编辑:如果我将项目导出为“可运行 JAR”而不是简单的“JAR”,程序将启动但无法使用我正在使用的另一个库(RxtxComm)。这是我得到的日志:
java.lang.UnsatisfiedLinkError: no rxtxSerial in java.library.path thrown while loading gnu.io.RXTXCommDriver
EDIT2:我终于通过将 rxtxSerial.dll 放在 Windows/system32 文件夹中解决了最后一个问题。但是,我仍然不明白如果我将项目导出为 JAR 文件,为什么它不再起作用,以及为什么我现在需要使用 dll 文件。