我想在Spring框架和Spring Security中配置日志记录,然后按照这个http://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/html/overview.html#overview-not-using-commons-logging
但是当我加载Tomcat时,我遇到了这个问题:
GRAVE:子容器在启动期间失败
java.util.concurrent.ExecutionException:
org.apache.catalina.LifecycleException:无法启动组件
[StandardEngine[Catalina].StandardHost[localhost].StandardContext[/RH-Explore]]
在 java.util.concurrent.FutureTask.report(来源未知)
java.util.concurrent.FutureTask.get(来源未知)位于
org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1123)
在
org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:816)
在
org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
在
org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1575)
在
org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1565)
在 java.util.concurrent.FutureTask.run(来源未知)
java.util.concurrent.ThreadPoolExecutor.runWorker(来源未知)位于
java.util.concurrent.ThreadPoolExecutor$Worker.run(来源未知)
java.lang.Thread.run(来源不明) 原因:
org.apache.catalina.LifecycleException:无法启动组件
[StandardEngine[Catalina].StandardHost[localhost].StandardContext[/RH-Explore]]
在
org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
... 6 更多
引起原因:java.lang.NoClassDefFoundError:
org/springframework/core/io/资源位于
java.lang.Class.getDeclaredFields0(本机方法) at
java.lang.Class.privateGetDeclaredFields(来源未知)位于
java.lang.Class.getDeclaredFields(来源未知)位于
org.apache.catalina.util.Introspection.getDeclaredFields(Introspection.java:106)
在
org.apache.catalina.startup.WebAnnotationSet.loadFieldsAnnotation(WebAnnotationSet.java:270)
在
org.apache.catalina.startup.WebAnnotationSet.loadApplicationListenerAnnotations(WebAnnotationSet.java:89)
在
org.apache.catalina.startup.WebAnnotationSet.loadApplicationAnnotations(WebAnnotationSet.java:63)
在
org.apache.catalina.startup.ContextConfig.applicationAnnotationsConfig(ContextConfig.java:415)
在
org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:892)
在
org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:386)
在
org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
在
org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
在
org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5412)
在
org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 6 更多
pom.xml
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
<scope>runtime</scope>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
<scope>runtime</scope>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-core</artifactId>
<version>${spring.security.version}</version>
<scope>runtime</scope>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.5.8</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.5.8</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.5.8</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.14</version>
<scope>runtime</scope>
</dependency>
我解决了问题!!
首先,这个错误:
GRAVE:子容器在启动期间失败
java.util.concurrent.ExecutionException:
org.apache.catalina.LifecycleException:无法启动组件
[StandardEngine[Catalina].StandardHost[localhost].StandardContext[/RH-Explore]]
是部署问题,所以我对项目进行了清理,然后收到此错误:
Grave:初始化环境中的异常
(上下文初始化)à l'instance de classe d'écoute(侦听器)
org.springframework.web.context.ContextLoaderListener
java.lang.AbstractMethodError:
org.slf4j.impl.JDK14LoggerAdapter.log(Lorg/slf4j/Marker;Ljava/lang/String;ILjava/lang/String;[Ljava/lang/Object;Ljava/lang/Throwable;)V
这个错误是兼容性问题SLF4J
,所以我改变了版本1.5.8
to 1.7.12
我还发现了一些重复的SLF4J
包应该从pom.xml
因为这个错误而罐子:
SLF4J:类路径包含多个 SLF4J 绑定。
另外,启动 tomcat 时控制台中出现此错误:
INFOS:在类路径上未检测到 Spring WebApplicationInitializer 类型
这是一个问题servlet-api
,我用的版本2.5
所以为了解决这个问题我改变了版本3.0.1
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
</dependency>
所有问题都消失了,春季日志记录工作正常:D
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)