maven Log4j2 java.lang.NoClassDefFoundError:org/apache/Logging/log4j/LogManager

xzv2uavs  于 2022-10-26  发布在  Maven
关注(0)|答案(3)|浏览(305)

我在我的Java应用程序中使用了log4j2.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中运行良好,因此应该不会丢失依赖项。

31moq8wy

31moq8wy1#

当您从命令行运行应用程序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-Dependency-plugin

<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将所有的依赖。

oug3syen

oug3syen2#

请将JAR文件添加到库中的类路径中,这对我有效

k4emjkb1

k4emjkb13#

安装最新版本的log4j(我已经安装了log4j-2.3.jar)
并执行以下步骤:

  • 右键单击项目->构建路径->库->添加外部JAR->包含Log4j、Log4j core和Log4j API Jars。

这对我很管用

相关问题