【问题标题】:Grails 2.3.5 War not correctly working in Tomcat 7.0.47Grails 2.3.5 War 在 Tomcat 7.0.47 中无法正常工作
【发布时间】:2016-01-10 19:58:44
【问题描述】:

在开发中运行应用程序时,它运行良好。 当我构建战争并尝试在 tomcat 中部署时,它给出了以下错误:

log4j:ERROR Error initializing log4j: tried to access field org.slf4j.impl.StaticLoggerBinder.SINGLETON from class org.slf4j.LoggerFactory
java.lang.IllegalAccessError: tried to access field org.slf4j.impl.StaticLoggerBinder.SINGLETON from class org.slf4j.LoggerFactory
    at org.slf4j.LoggerFactory.staticInitialize(LoggerFactory.java:83)
    at org.slf4j.LoggerFactory.<clinit>(LoggerFactory.java:73)
    at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155)
    at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:131)
    at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:685)
    at org.codehaus.groovy.grails.commons.DefaultGrailsApplication.<clinit>(DefaultGrailsApplication.java:82)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
    at java.lang.Class.newInstance(Class.java:379)
    at org.codehaus.groovy.grails.plugins.log4j.web.util.Log4jConfigListener.createGrailsApplication(Log4jConfigListener.java:54)
    at org.codehaus.groovy.grails.plugins.log4j.web.util.Log4jConfigListener.contextInitialized(Log4jConfigListener.java:42)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:5017)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5531)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652)
    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1095)
    at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1930)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)

【问题讨论】:

    标签: grails grails-2.3


    【解决方案1】:

    根据 SLF4j FAQs

    这个错误是由 LoggerFactory 的静态初始化器引起的 试图直接访问 SINGLETON 字段的类 org.slf4j.impl.StaticLoggerBinder。虽然这在 SLF4J 中是允许的 1.5.5 及更早版本,在 1.5.6 及更高版本中,SINGLETON 字段已标记为私有访问。

    如果您遇到上面显示的异常,那么您使用的是较旧的 slf4j-api 版本,例如1.4.3,用新版本的slf4j 绑定,例如1.5.6。通常,当您的 Maven pom.ml 文件包含 hibernate 3.3.0,它声明了对 slf4j-api 版本 1.4.2。如果您的 pom.xml 声明依赖于 slf4j 绑定,比如 slf4j-log4j12 版本 1.5.6,然后你会得到 非法访问错误。在您的 pom.xml 文件中,明确声明 对 slf4j-api 的依赖与声明的绑定版本匹配 会让问题消失。

    另请参阅answer。 您可能需要验证您的服务器不包含 slf4j-api 的旧版本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-10
      • 1970-01-01
      • 2013-07-09
      • 2013-05-06
      • 1970-01-01
      • 1970-01-01
      • 2014-08-24
      • 2017-07-04
      相关资源
      最近更新 更多