log4j2 java.lang.NoClassDefFoundError: org/apache/logging/log4j/LogManager

前端 未结 2 1277
不思量自难忘°
不思量自难忘° 2021-02-05 23:18

I am using log4j 2.3 in my java application. I added the dependency via maven.
When running the program in eclipse everything work fine, but when I package it with maven and

相关标签:
2条回答
  • 2021-02-05 23:51

    Install the latest version of log4j (I have installed log4j-2.3.jar).

    And follow the below steps:

    • Right click project -> Build path -> Libraries -> Add External Jars -> Include Log4j, Log4j core and Log4j api jars.

    It worked for me

    0 讨论(0)
  • 2021-02-06 00:03

    When you are running your application jar from command line your dependent jar are not available at runtime. You need to include any of these two plugins to pom.xml so have your dependencies available at runtime.

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

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

    When you will execute the mvn package it will generate uber jar / or copy the dependencies to outputDirectory. I will prefer maven-shade-plugin to generate one jar will all dependencies.

    0 讨论(0)
提交回复
热议问题