wildfly 16,log4j 2.17.0,NoSuchFieldError:EMPTY_BYTE_ARRAY

r-u*_*-uu 10 log4j wildfly

我在 Wildfly 启动期间收到错误,并显示以下消息:

NoSuchFieldError:EMPTY_BYTE_ARRAY

该消息还指出,此错误发生在 undertow 部署中。有人能给我提示一下这里发生了什么以及如何解决这个问题吗?

下面是堆栈跟踪的开头。

at org.wildfly.extension.undertow@24.0.1.Final//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 org.jboss.threads@2.4.0.Final//org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
at org.jboss.threads@2.4.0.Final//org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1990)
at org.jboss.threads@2.4.0.Final//org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1486)
at org.jboss.threads@2.4.0.Final//org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1377)
at java.base/java.lang.Thread.run(Thread.java:829)
at org.jboss.threads@2.4.0.Final//org.jboss.threads.JBossThread.run(JBossThread.java:513)
Run Code Online (Sandbox Code Playgroud)

引起的: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) 在部署时。 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。战争//org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:47)在org.apache.logging.log4j.api@2.14.1//org.apache.logging.log4j.LogManager .getContext(LogManager.java:196) 在 org.apache.logging.log4j.api@2.14.1//org.apache.logging.log4j.LogManager.getLogger(LogManager.java:599)

mad*_*adx 17

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

  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>
    
    Run Code Online (Sandbox Code Playgroud)
  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>
    
    Run Code Online (Sandbox Code Playgroud)