【问题标题】:Could not index class module-info.class atlog4j-api.jar: java.lang.IllegalStateException: Unknown tag! pos=4 poolCount = 24无法索引类 module-info.class atlog4j-api.jar:java.lang.IllegalStateException:未知标签! pos=4 池数 = 24
【发布时间】:2019-02-10 11:39:24
【问题描述】:

我们已将 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 中的模块信息类: 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


    【解决方案1】:

    首先,这只是一个警告。

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

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

    【讨论】:

    • 我们只使用 JDK 1.8,如果我们将 log4j 版本降级到以前的版本,即 2.7,那么我们会收到 NoSuchMethodFoundException 错误。
    • 我认为这是我的错。在 java9 中引入了多版本 jars
    • 我将 Wildfly 服务器从 wildfly10.1.0 更改为 wildfly-15.0.1,它工作正常。
    • 我在使用 Java 8 + WildFly 14 时也遇到过类似的问题。我刚刚升级了 json.jar,这个问题得到了解决。
    【解决方案2】:

    这是一条警告消息,它发生是因为 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-26
      • 2018-03-16
      • 2018-11-04
      • 2018-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-02
      相关资源
      最近更新 更多