Grails 2.3.5 War在Tomcat 7.0.47中无法正常工作
在开发中运行应用程序时,它工作正常。 当我构建war并尝试在tomcat中部署时,会出现以下错误:Grails 2.3.5 War在Tomcat 7.0.47中无法正常工作,grails,grails-2.3,Grails,Grails 2.3,在开发中运行应用程序时,它工作正常。 当我构建war并尝试在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
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)
log4j:初始化log4j时出错:试图从类org.slf4j.LoggerFactory访问字段org.slf4j.impl.StaticLoggerBinder.SINGLETON
java.lang.IllegalAccessError:试图从org.slf4j.LoggerFactory类访问字段org.slf4j.impl.StaticLoggerBinder.SINGLETON
位于org.slf4j.LoggerFactory.staticInitialize(LoggerFactory.java:83)
登录org.slf4j.LoggerFactory(LoggerFactory.java:73)
位于org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155)
位于org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:131)
位于org.apache.commons.logging.LogFactory.getLog(LogFactory.java:685)
位于org.codehaus.groovy.grails.commons.DefaultGrailsApplication。(DefaultGrailsApplication.java:82)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
位于java.lang.reflect.Constructor.newInstance(Constructor.java:526)
位于java.lang.Class.newInstance(Class.java:379)
位于org.codehaus.groovy.grails.plugins.log4j.web.util.Log4jConfigListener.createGrailsApplication(Log4jConfigListener.java:54)
位于org.codehaus.groovy.grails.plugins.log4j.web.util.Log4jConfigListener.contextInitialized(Log4jConfigListener.java:42)
位于org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:5017)
位于org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5531)
位于org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
位于org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
位于org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
位于org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652)
位于org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1095)
位于org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1930)
位于java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
在java.util.concurrent.FutureTask.run(FutureTask.java:262)处
位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
运行(Thread.java:745)
根据SLF4j
此错误是由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的依赖关系
这将使问题消失
请看这一点。
您可能需要验证服务器不包含slf4j api的旧版本