【发布时间】:2014-08-15 00:07:42
【问题描述】:
我正在为我的项目创建一个使用 Log4j2 的 JAR 文件。我已将 Log4j2 jar(用于 CORE 和 API)保存在“src”文件夹下的“lib”文件夹中。在 Eclipse 中,我导出了我的项目以创建 JAR 文件,并检查了 JAR 文件中是否包含/存在“lib”文件夹。
当我在 Eclipse 中运行项目时,它运行得非常好,但是当我尝试通过 cmd 提示符执行 jar 时,我收到以下错误:
C:\Users\workspace>java -jar ConnectorClient.jar
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/logging/log4j/LogManager
at com.client.ConnectionClient.<clinit>(ConnectionClient.java:20)
Caused by: java.lang.ClassNotFoundException: org.apache.logging.log4j.LogManager
at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 1 more
我的代码中导致错误的行(第 20 行)是:
private static Logger logger = LogManager.getLogger(ConnectionClient.class);
似乎没有读取 Log4j2 jar。有人可以在这里帮助我吗?如图所示,我已经在项目的 Java 构建路径中添加了 2 个 jar。
我的类路径文件(位于项目文件夹中)包括问题中的 2 个 jar,如下所示:
<?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/jdk1.8.0_05"/>
<classpathentry kind="lib" path="lib/log4j-api-2.0-rc1.jar"/>
<classpathentry kind="lib" path="lib/log4j-core-2.0-rc1.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>
有什么帮助吗?
谢谢
【问题讨论】:
-
尝试使用 projectroot 添加 jar 右键单击配置构建路径然后添加外部 jars