线程" main"中的例外情况java.lang.NoClassDefFoundError:org / apache / log4j /生成的jar文件中的Logger

时间:2018-05-29 14:29:35

标签: java maven intellij-idea jar

我在IntelliJ IDEA中使用jar生成了一个Maven文件。尝试执行时出现以下错误消息:

  

线程中的异常" main" java.lang.NoClassDefFoundError:   组织/阿帕奇/ log4j的/记录器

我只使用一个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>

1 个答案:

答案 0 :(得分:1)

当您从IDEA包含的IDEA依赖项运行它时,您可以在IDEA的运行工具窗口中查看命令。 但是当你生成一个jar并运行它时,它没有包含依赖项。要使其工作,您必须告诉Maven包含它们,其中一种方法是使用Apache Maven Assembly Pluginbuild部分添加到 pom.xml :< / p>

<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>