Log4j 2.16.0 java 8

Log4j 2.16.0 java 8

由于 log4j (CVE-2021-44228) 上的问题,我将一些应用程序迁移到 log4j 2.15.0(使用 JBoss EAP 7.1 和 jdk 1.8.0_211-b12)而没有任何问题。 我现在想从 log4j 2.15.0 迁移到 2.16.0。

当我尝试时出现以下错误

 15:20:59,361 WARN [org.jboss.as.server.deployment] (MSC service thread
 1-8) WFLYSRV0003: Could not index class
 META-INF/versions/9/module-info.class  at
 /C:/jboss-eap-7.1/standalone/deployments/myApp-SNAPSHOT.war/WEB-INF/lib/log4j-api-2.16.0.jar:
 java.lang.IllegalStateException: Unknown tag! pos=4 poolCount = 32 at
 org.jboss.jandex.Indexer.processConstantPool(Indexer.java:1417) at
 org.jboss.jandex.Indexer.index(Indexer.java:1451) at
 org.jboss.as.server.deployment.annotation.ResourceRootIndexer.indexResourceRoot(ResourceRootIndexer.java:99)
 at
 org.jboss.as.server.deployment.annotation.AnnotationIndexProcessor.deploy(AnnotationIndexProcessor.java:51)
 at
 org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:165)
 at
 org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:2032)
 at
 org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1955)
 at
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
 at
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
 at java.lang.Thread.run(Thread.java:748)

它似乎与 java 版本有关,特别是因为它适用于 JBoss EAP 7.3 和 jdk 11,但官方文档说

"Log4j 2.16.0 是 Log4j 的最新版本。从 Log4j 2.13.0 开始,Log4j 2 在运行时需要 Java 8 或更高版本。此版本包含新功能和修复可以在最新的更改报告中找到。"

https://logging.apache.org/log4j/2.x/index.html

有人遇到同样的问题吗?

编辑:重建所有项目后,我意识到这个堆栈不是导致崩溃的原因。因为这是警告,所以我会忽略它

我在使用 log4j 2.16.0 和 WildFly 10.1 时遇到了同样的问题。 我尝试将 WildFly 从 10.1 更新到 13.0 并解决了该错误。

问题已在 WildFly 13.0 ( https://issues.redhat.com/browse/WFLY-9608 ) 上修复。

似乎JBoss EAP 7.2相当于WildFly 14.0

http://www.mastertheboss.com/jbossas/jboss-eap/what-is-the-difference-between-jboss-eap-wildfly-and-jboss-as/

所以你应该更新 JBoss EAP 比 7.2 更新。