wildfly 16,log4j 2.17.0,NoSuchFieldError:EMPTY_BYTE_ARRAY

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

我在 Wildfly 启动过程中收到错误,并显示以下消息:

NoSuchFieldError:EMPTY_BYTE_ARRAY

该消息还指出该错误发生在 undertow 部署中。有人可以告诉我这里发生了什么以及如何解决这个问题吗?

下面是堆栈跟踪的开头。

at [email protected]//org.wildfly.extension.undertow.deployment.UndertowDeploymentService$1.run(UndertowDeploymentService.java:90)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at [email protected]//org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
at [email protected]//org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1990)
at [email protected]//org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1486)
at [email protected]//org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1377)
at java.base/java.lang.Thread.run(Thread.java:829)
at [email protected]//org.jboss.threads.JBossThread.run(JBossThread.java:513)

引起:java.lang.NoSuchFieldError: EMPTY_BYTE_ARRAY 在deployment.taggable-server.war//org.apache.logging.log4j.core.config.ConfigurationSource。(ConfigurationSource.java:56) 在deployment.taggable-server.war//org.apache.logging.log4j.core.config.NullConfiguration。(NullConfiguration.java:32) 在deployment.taggable-server.war//org.apache.logging.log4j.core.LoggerContext。(LoggerContext.java:85) 在deployment.taggable-server.war//org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.createContext(ClassLoaderContextSelector.java:254) 在deployment.taggable-server.war//org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.locateContext(ClassLoaderContextSelector.java:218) 在deployment.taggable-server.war//org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.getContext(ClassLoaderContextSelector.java:136) 在deployment.taggable-server.war//org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.getContext(ClassLoaderContextSelector.java:123) 在deployment.taggable-server.war//org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.getContext(ClassLoaderContextSelector.java:117) 在deployment.taggable-server.war//org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:150) 在deployment.taggable-server.war//org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:47) 在 [email protected] //org.apache.logging.log4j.LogManager.getContext(LogManager.java:196) 在 [email protected]//org.apache.logging.log4j.LogManager.getLogger(LogManager.java:599)

log4j wildfly
4个回答
15
投票

我也遇到了同样的问题,你可以这样解决:

  1. 对于

    war

    里面有

    jboss-deployment-structure.xml
    src/main/webapp/WEB-INF/
    ,如下所示:

    <?xml version="1.0" encoding="UTF-8"?>
    <jboss-deployment-structure>
      <deployment>
         <exclusions>
            <module name="org.apache.logging.log4j.api"/>
        </exclusions>
      </deployment>
    </jboss-deployment-structure>
    
  2. 对于

    ear

    里面有

    jboss-deployment-structure.xml
    src/main/application/META-INF/
    ,如下所示:

    <?xml version="1.0" encoding="UTF-8"?>
    <jboss-deployment-structure>
      <sub-deployment name="mywar.war">
         <exclusions>
            <module name="org.apache.logging.log4j.api"/>
        </exclusions>
      </sub-deployment>
    </jboss-deployment-structure>
    

2
投票

您需要从部署中排除 API 模块。您的另一个选择是使用 WildFly 26,其中包含 2.16 版本的 API。


1
投票

将log4j和log4j-api更新到2.16.0版本。

如果您使用的是 spring-boot,请在 pom.xml 中添加标签

 <properties> 
    <log4j2-version>2.16.0</log4j2-version>
  </properties>

        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api</artifactId>
            <version>2.16.0</version>
        </dependency>

在 pom.xml 中


0
投票

我通过将 log4j 版本更新到较低版本来修复此问题,并且它有效。 始终检查您是否有相同版本的工件(log4j-api 和 log4j-core)

    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>2.17.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.17.1</version>
    </dependency>
© www.soinside.com 2019 - 2024. All rights reserved.