java - 在 Wildfly 中重新部署战争时出现 ClassCastingException
问题描述
我总是在重新部署我的网络应用程序的新版本时遇到错误。
我必须取消部署并重新启动服务器才能使其正常工作。
如果我不重新启动服务器,我会在部署过程中收到此消息:
org.apache.logging.log4j.core.LoggerContext 不能转换为 org.apache.logging.log4j.core.LoggerContext
我运行一个 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>
解决方案
发生这种情况是因为 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>
PS这为我修复了与您相同的技术堆栈
推荐阅读
- php - 如何在 trello 中使用 webhook 发送操作?
- c++ - Eigen 中的自定义标量类型
- wordpress - 将分类术语重定向到不带斜杠的查询字符串
- c++ - 为什么一个锁的两个线程可以超过100%的CPU使用率
- vb.net - 如何从 For Each 循环中获取最大值
- c# - 如何修复文本框高度
- java - 如何在表中获取特殊数据,在 JAVA 中使用字符串方程
- kubernetes - Google Kubernetes Engine - 找不到“kubens”命令错误
- spring-webflow - spring webflow java应用调试状态机
- r - 处理来自 JSON 的深度嵌套列表