无法索引类 module-info.class atlog4j-api.jar:java.lang.IllegalStateException:未知标签! pos=4 池数 = 24

问题描述 投票:0回答:2

我们已将 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 警告 [org.jboss.as.server.deployment] (MSC 服务线程 1-2) WFLYSRV0003:无法索引类 /content/project.ear/shared/log4j-api.jar 中的 module-info.class: java.lang.IllegalStateException:未知标签! pos=4 poolCount = 24 在 org.jboss.jandex.Indexer.processConstantPool(Indexer.java:1416) 在 org.jboss.jandex.Indexer.index(Indexer.java:1450) 在 org.jboss.as.server.deployment.annotation.ResourceRootIndexer.indexResourceRoot(ResourceRootIndexer.java:99) 在 org.jboss.as.server.deployment.annotation.AnnotationIndexProcessor.deploy(AnnotationIndexProcessor.java:51) 在 org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:165) 在 org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:2032) 在 org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1955) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 在 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 的依赖信息。

谁能帮我解决这个问题?

提前致谢。

java maven jboss
2个回答
13
投票

首先这只是一个警告。

我猜您使用的 Java 版本低于 8 9。

module-info.class
用于所谓的多版本 jar(与所有 java 版本兼容的 jar)。

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


3
投票

这是一条警告消息,它的发生是因为 jandex 支持 Java9 是简单地忽略依赖存档中的 module-info.class 文件。为避免此警告消息,请将 (wildfly_HOME\modules\system\layers ase\org\jboss\jandex\main\jande-version.jar 中存在的 jandex jar 替换为 jandex-2.0.5.Final-redhat-1 和相应的module.xml 还有。 参考:https://issues.redhat.com/browse/JBEAP-15262 https://issues.redhat.com/browse/JBEAP-15715

© www.soinside.com 2019 - 2024. All rights reserved.