![](/img/trans.png)
[英]Exception in thread “main” java.lang.NoClassDefFoundError: org/apache/logging/log4j/LogManager
[英]log4j2 java.lang.NoClassDefFoundError: org/apache/logging/log4j/LogManager
我在我的 java 应用程序中使用 log4j 2.3。 我通过 Maven 添加了依赖项。
在eclipse中运行程序时一切正常,但是当我用maven打包并尝试运行jar时,我收到以下错误:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache logging/log4j/LogManager
at main.myclass.<clinit>(myclass.java:11)
Caused by: java.lang.ClassNotFoundException: org.apache.logging.log4j.LogManager
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
为什么在从 jar 运行它时无法找到该类?
添加log4j 1.2
也不起作用。 该程序在 eclipse 中运行良好,因此应该没有缺少依赖项。
从命令行运行应用程序jar时,依赖jar在运行时不可用。 您需要将这两个插件中的任何一个包含到pom.xml中,以便在运行时使用您的依赖项。
使用:maven-shade-plugin
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>org.sonatype.haven.HavenCli</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
使用:Maven的依赖关系的插件
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.8</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
当您执行mvn package
,它将生成uber jar /或将依赖项复制到outputDirectory。 我更喜欢maven-shade-plugin生成一个jar将所有依赖项。
安装最新版本的log4j
(我已经安装了log4j-2.3.jar
) 。
并按照以下步骤操作:
它对我有用
请将 jar 文件添加到库中的类路径,它对我有用
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.