log4j 在wildfly中重新部署警告时出现ClassCastingException

xzlaal3s  于 2022-11-23  发布在  其他
关注(0)|答案(2)|浏览(225)

重新部署Web应用程序的新版本时总是出现错误。
我必须取消部署并重新启动服务器才能使其正常工作。
如果我不重新启动服务器,我会在部署过程中收到以下消息:
无法将“日志上下文”强制转换为“日志上下文”
我运行一个Springboot应用程序作为后端和前端Angular 。
这里是我的Maven依赖关系:

<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <version>2.4.4</version>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-logging</artifactId>
            </exclusion>
            <exclusion>
                <groupId>log4j</groupId>
                <artifactId>*</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.slf4j</groupId>
                <artifactId>*</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>*</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.apache.tomcat.embed</groupId>
                <artifactId>tomcat-embed-websocket</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-log4j2</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot</artifactId>
        <version>2.4.4</version>
    </dependency>
w7t8yxp5

w7t8yxp51#

这是因为WildFly上已经存在(隐式)log4j API依赖项。您可以将WildFly配置为不添加其自己的API日志依赖项。
A)从WildFly控制台:配置-〉子系统-〉日志记录配置
将“添加日志记录API依赖性”更改为
false

B)通过编辑standalone.xml

<subsystem xmlns="urn:jboss:domain:logging:8.0">
   <add-logging-api-dependencies value="false"/>

C)或者,如果您有jboss-deployment-structure.xml

<deployment>
    <exclude-subsystems>
      <subsystem name="logging"/>
    </exclude-subsystems>
  </deployment>

附言:我用和你一样的技术解决了这个问题
jboss doc about logging-api-dependencies

nhaq1z21

nhaq1z212#

我认为您应该排除org.apache.logging.log4j

<exclusion>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>*</artifactId>
</exclusion>

因为log4j:log4j是旧名称

相关问题