无法索引类 module-info.class atlog4j-api.jar: java.lang.IllegalStateException: Unknown tag!pos=4 池计数 = 24

2022-09-02 04:37:09

我们已经将log4j jar从log4j-api-2.7.jar更新为log4j-api-2.10.0.jar。我们在JBoss启动时得到了以下警告(我们正在使用JBoss-EAP-7.0)。

2018-09-05 05:31:28,669 WARN [org.jboss.as.server.deployment] (MSC service thread 1-2) WFLYSRV0003: 无法索引类 module-info.class at /content/project.ear/shared/log4j-api.jar: java.lang.IllegalStateException: Unknown tag!pos=4 poolCount = 24 at org.jboss.jandex.Indexer.processConstantPool(Indexer.java:1416) at org.jboss.jandex.Indexer.index(Indexer.java:1450) at org.jboss.as.server.deployment.annotation.ResourceRootIndexer.indexResourceRoot(ResourceRootIndexer.java:99) at org.jboss.as.server.deployment.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)

经过我的分析,似乎module-info.class是在log4j-api-2.10.0中新引入的.jar现在它无法在启动时索引该类。它使用JBoss的jandex-2.0.2.Final-redhat-1.jar来自eap-runtime-artifacts-7.0.5.GA.pom的依赖信息。

任何人都可以帮我解决这个问题吗?

提前致谢。


答案 1

首先,这只是一个警告。

我猜你使用的是低于8的Java版本。用于所谓的多释放jar(可与所有java版本兼容的jar)。module-info.class

直到版本 8 的 Java 都与这种技术不是 100% 兼容的。所以我看到的唯一方法是将Java版本升级到1.8或降级log4j


答案 2

这是一个警告消息,这是因为jandex支持Java9只是简单地忽略模块信息.class文件在依赖的归档中。要避免此警告消息,请将 (wildfly_HOME\modules\system\layers\base\org\jboss\jandex\main\jande-version.jar中的 jandex jar 替换为 jandex-2.0.5.Final-redhat-1 和相应的模块.xml。编号 : https://issues.redhat.com/browse/JBEAP-15262 https://issues.redhat.com/browse/JBEAP-15715


推荐