我生成了一个jar
文件 Maven
在 IntelliJ IDEA 中。当尝试执行它时,我收到以下错误消息:
Exception in thread "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 包含它们,方法之一是使用 Apache Maven Assembly Plugin通过将 build
部分添加到您的 pom.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>
关于java - 线程 "main"java.lang.NoClassDefFoundError : org/apache/log4j/Logger in generated jar file 中出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50586934/