NoClassDefFoundError的更新到Java 7后(NoClassDefFoundErr

2019-09-22 07:49发布

执行我的项目的JAR文件后,我发现了NoClassDefFoundError的。 用Eclipse进行调试工作正常,但每当我使用Windows命令我得到这个错误java -jar myproject.jar ,因为我安装JDK 1.7。

这是工作细使用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

我用Google搜索有关,但无法找到合适的解决方案。

我已经做了:-uninstall的Java 1.7,安装1.6,而不是-check的其他计算机上的类路径 - 尝试(从它卸载Java 1.7之后)有一个参考的log4j库=>同样的问题-create空项目

而这里的类路径文件:

<?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文件时,它不工作了。

Answer 1:

你确定你运行jar文件时的log4j的jar在类路径? 检查两种:

  • 你有一个CLASSPATH系统变量包含,除其他外,wher的log4j的JAR所在的文件夹

  • 您启动罐子时传递的log4j的jar文件夹作为参数

    Java的罐子yourJar.jar -classpath C:\ myLog4JJarFolder

更新:

按照使用的罐子说法会让你的-classpath参数无用安德鲁·汤普森的评论(它会被忽略)。 为了能够在你也必须用你的主类作为启动参数的全名在命令行中指定的类路径:

java -classpath "c:\dir1;c:\dir2" package.subPackage.MainClass


Answer 2:

除上述外,几件事情,我会检查:

  • 确保您已打包的所有资源在可执行的JAR文件。 提取您的罐子,看一看,以确保公正。

  • 将JAR添加到类路径:

    java命令[罐子这里] main.java



文章来源: NoClassDefFoundError after updating to Java 7