我们已经将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 at 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)
经过我的分析,似乎在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的依赖项信息。
任何人都可以帮助我解决此问题吗?
谢谢。
答案 0 :(得分:3)
首先,这只是一个警告。
我猜您正在使用低于8的Java版本。module-info.class
用于所谓的Multi release jar(兼容所有Java版本的jar)。
直到版本8的Java都不100%与该技术兼容。因此,我看到的唯一方法是将Java版本升级到1.8或将log4j降级
答案 1 :(得分:0)
这是一条警告消息,由于jandex支持Java9而发生,只是忽略了相关档案中的module-info.class文件。为了避免出现此警告消息,请将(wildfly_HOME \ modules \ system \ layers \ base \ 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