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

pra*_*ant 7 java jboss maven

我们已经将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上为class module-info.class编制索引/log4j-api.jar:java.lang.IllegalStateException:未知标签!pos = 4 poolCount = 24,位于org.jboss.as.server.deployment的org.jboss.jandex.Indexer.index(Indexer.java:1450)的org.jboss.jandex.Indexer.processConstantPool(Indexer.java:1416) org.jboss.as.server.deployment.annotation.AnnotationIndexProcessor.deploy(AnnotationIndexProcessor.java:51)上的.annotation.ResourceRootIndexer.indexResourceRoot(ResourceRootIndexer.java:99)位于org.jboss.as.server.deployment.startmentUnitPhase (org.jboss.msc.service.ServiceControllerImpl $ StartTask.startService(ServiceControllerImpl.java:2032)上的(DeploymentUnitPhaseService.java:165)。

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

谁能帮我解决这个问题?

提前致谢。

Jen*_*ens 5

首先,这只是一个警告。

我猜您使用的Java版本低于8。该版本module-info.class用于所谓的Multi release jar(与所有Java版本兼容的jar)。

直到版本8的Java都不100%与该技术兼容。因此,我看到的唯一方法是将Java版本升级到1.8或将log4j降级

  • 我认为那是我的错。多版本 jars 是在 java9 中引入的 (2认同)
  • 我将我的 wildfly 服务器从 wildfly10.1.0 更改为 wildfly-15.0.1 并且工作正常。 (2认同)