线程中的异常 "main" java.lang.NoClassDefFoundError: org/apache/log4j/Logger in generated jar file



我在IntelliJ IDEA中生成了一个带有Mavenjar文件。尝试执行它时收到以下错误消息:

线程"main"中的异常 java.lang.NoClassDefFoundError: org/apache/log4j/Logger

我只使用一个log4j版本,1.2.17 和 java 版本 1.8.0_171。我也在pom中设置了跳过测试.xml:<maven.test.skip>true</maven.test.skip>直接从 IDE 成功执行。我使用Maven Surefire插件:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>

当您从 IDEA 运行它时,IDEA 包含依赖项,您可以在 IDEA 的运行工具窗口中检查该命令。 但是当你生成一个jar并运行它时,它不包含任何依赖项。要使其正常工作,您必须告诉Maven包含它们,其中一种方法是通过将build部分添加到您的pom来使用Apache Maven程序集插件.xml:

<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>package.MainClass</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
</plugins>
</build>

最新更新