代码之家  ›  专栏  ›  技术社区  ›  Jav

spring boot中配置的Log4j2问题

  •  1
  • Jav  · 技术社区  · 7 年前

    我有多模块spring boot项目,我添加了log4j2作为日志机制,它在启动服务器时抛出下面的异常。

    Exception in thread "pool-1-thread-1" java.lang.NoClassDefFoundError: org/apache/logging/log4j/message/ParameterizedMessage
    at org.apache.logging.log4j.message.ParameterizedNoReferenceMessageFactory.newMessage(ParameterizedNoReferenceMessageFactory.java:104)
    at org.apache.logging.log4j.message.AbstractMessageFactory.newMessage(AbstractMessageFactory.java:75)
    at org.apache.logging.log4j.spi.AbstractLogger.logMessage(AbstractLogger.java:2010)
    at org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(AbstractLogger.java:1884)
    at org.apache.logging.log4j.spi.AbstractLogger.error(AbstractLogger.java:793)
    at org.apache.logging.log4j.core.util.DefaultShutdownCallbackRegistry.run(DefaultShutdownCallbackRegistry.java:76)
    at java.lang.Thread.run(Thread.java:745)
    

    原因:java。lang.ClassNotFoundException:非法访问:此web应用程序实例已停止。无法加载[org.apache.logging.log4j.message.ParameterizedMessage]。抛出以下堆栈跟踪是为了调试目的,也是为了尝试终止导致非法访问的线程。 位于组织。阿帕奇。卡特琳娜。装载机。WebappClassLoaderBase。checkStateForClassLoading(WebappClassLoaderBase.java:1295) 位于组织。阿帕奇。卡特琳娜。装载机。WebappClassLoaderBase。loadClass(WebappClassLoaderBase.java:1158) 位于组织。阿帕奇。卡特琳娜。装载机。WebappClassLoaderBase。loadClass(WebappClassLoaderBase.java:1119) ... 7个以上 原因:java。lang.IllegalStateException:非法访问:此web应用程序实例已停止。无法加载[org.apache.logging.log4j.message.ParameterizedMessage]。抛出以下堆栈跟踪是为了调试目的,也是为了尝试终止导致非法访问的线程。 位于组织。阿帕奇。卡特琳娜。装载机。WebappClassLoaderBase。checkStateForResourceLoading(WebappClassLoaderBase.java:1305) 位于组织。阿帕奇。卡特琳娜。装载机。WebappClassLoaderBase。checkStateForClassLoading(WebappClassLoaderBase.java:1293) ... 9个以上

    父pom。xml设置

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>1.5.9</version>
            <exclusions>
                <exclusion>
                  <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
            </exclusions>
            <type>pom</type>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                  <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
            </exclusions>
            <version>1.5.9</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <version><version>1.5.9</version></version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-log4j2</artifactId>
            <version>1.5.9</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
            <exclusions>
                <exclusion>
                  <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
            </exclusions>
            <version>1.5.9</version>
        </dependency>
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   GSSwain    7 年前

    您可以将POM更新为

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.9.RELEASE</version>
        <relativePath /> <!-- lookup parent from repository -->
    </parent>
    
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>
    
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-log4j2</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <scope>runtime</scope>
        </dependency>
    </dependencies>
    

    注:该 h2 添加依赖项是为了确保类路径上有一些JDBC驱动程序,因为您有 spring-boot-starter-data-jpa . 如果您有其他一些JDBC依赖项,那么可以省略 h2 .