繁体   English   中英

线程“main”中的异常 java.lang.NoClassDefFoundError: org/apache/log4j/Logger 在创建可执行 JAR 后,但这是一个 JAVA 项目

[英]Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/log4j/Logger after creating an executable JAR but this is a JAVA Project

我有一个 JAVA (awt) 项目来构建桌面基础实用程序。 当我尝试从仅安装了 JRE 的其他机器上运行它时,这是一个异常

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/log4j/Logger
    at DataProcessor.DataProcessor.App.<clinit>(App.java:73)
    at java.base/java.lang.Class.forName0(Native Method)
    at java.base/java.lang.Class.forName(Unknown Source)
    at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:56)
Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Logger
    at java.base/java.net.URLClassLoader.findClass(Unknown Source)
    at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
    at java.base/java.lang.ClassLoader.loadClass(Unknown Source)  

这里我没有使用 Maven 项目,而是直接从 Eclipse 创建一个可执行 JAR。 尽管我在清单中看到了 log4J (log4j-1.2.17.jar) 的 JAR。 但是当我尝试从其他机器运行它时,这是一个例外。 (其他机器只有 JRE 而不是 JDK)按照我用来运行 JAR 的命令

C:\Users\<username>\Desktop\Utility\latest>"C:\Program Files\Java\jre1.8.0_161\bin\java.exe" -jar Utility.jar

例外是说您没有在类路径中找到 log4j 依赖项:您是否在与放置 jar 的文件夹相同的文件夹中提供 log4j.jar?

在运行应用程序时引用其他 jars 并不容易,如java -jar yourApp.jar ...

  • 您可以查看这篇关于在运行另一个 jar 时引用 jar 的帖子
  • 如果您想调查 MANIFEST 的用法,请查看此处

但是,我建议您使用 maven(或手动执行)导出一个 fatjar,并将所需的依赖项打包到其中(查看maven-assembler插件或Eclipse 可运行的 jar 导出选项)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM