问题描述
我想在弹簧框架和弹簧安全性中配置日志记录,然后遵循此 http://docs.spring.io/spring/spring/docs/3.2.x/spring-frame-frame-frame-frame-frame/html/html/html/overview.htmll/overview.html#概述 - 毫无用处,
但是当我加载tomcat时,我会遇到这个问题:
坟墓:一个孩子的容器在开始期间失败 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) ...更多
由:java.lang.noclassdeffounderror: org/springframework/core/io/资源在 java.lang.class.getDeclaredFields0(本机方法) java.lang.class.privategategategatedeclaredfields(未知来源) java.lang.class.getDeclaredFields(未知来源) org.apache.catalina.util.introspection.getDeclaredFields(Intropsection.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.lifecyclevent(contextConfig.java:386) 在 org.apache.catalina.util.lifecyclesupport.firelifecyclevent(lifecyclesupport.java:117) 在 org.apache.catalina.util.lifecyclebase.firelifecyclevent(lifecyclebase.java:90) 在 org.apache.catalina.core.standardcontext.startinternal(StandardContext.java:5412) 在 org.apache.catalina.util.lifecyclebase.start(lifecyclebase.java:150) ...更多
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>
推荐答案
我解决了问题!
首先,此错误:
坟墓:一个孩子的容器在开始期间失败 java.util.concurrent.executionException: org.apache.catalina.lifecycleexception:无法启动组件 [StandardEngine [Catalina] .standardhost [localhost] .standardContext [/rh-explore]]
是部署的问题,所以我为该项目做了清洁,然后得到了这个错误:
严重:例外 (上下文初始化)àl'l'Scessede classed'écoute(侦听器) org.springframework.web.context.ContextLoaderListener java.lang.abstractmethoderror: org.slf4j.impl.jdk14loggeradapter.log(lorg/slf4j/marker; ljava/lang/string; iljava; iljava/lang/string; [ljava/lang/object; ljava/lang/object; ljava/lang/lang/lang/thortable;
此错误是SLF4J兼容性的问题,因此我将版本从1.5.8更改为1.7.12 而且我还发现,由于此错误:
SLF4J:类路径包含多个SLF4J绑定.
也在启动Tomcat时,我在控制台中也有此错误:
infos:classpath上检测到的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
问题描述
I want to configure the logging in Spring framework and Spring Security, and followed this http://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/html/overview.html#overview-not-using-commons-logging
but when I load the Tomcat I got this problem:
GRAVE: A child container failed during start java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/RH-Explore]] at java.util.concurrent.FutureTask.report(Unknown Source) at java.util.concurrent.FutureTask.get(Unknown Source) at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1123) at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:816) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1575) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1565) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/RH-Explore]] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154) ... 6 more
Caused by: java.lang.NoClassDefFoundError: org/springframework/core/io/Resource at java.lang.Class.getDeclaredFields0(Native Method) at java.lang.Class.privateGetDeclaredFields(Unknown Source) at java.lang.Class.getDeclaredFields(Unknown Source) at org.apache.catalina.util.Introspection.getDeclaredFields(Introspection.java:106) at org.apache.catalina.startup.WebAnnotationSet.loadFieldsAnnotation(WebAnnotationSet.java:270) at org.apache.catalina.startup.WebAnnotationSet.loadApplicationListenerAnnotations(WebAnnotationSet.java:89) at org.apache.catalina.startup.WebAnnotationSet.loadApplicationAnnotations(WebAnnotationSet.java:63) at org.apache.catalina.startup.ContextConfig.applicationAnnotationsConfig(ContextConfig.java:415) at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:892) at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:386) at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117) at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5412) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) ... 6 more
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>
推荐答案
I solved the problem !!
first of all, this error:
GRAVE: A child container failed during start java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/RH-Explore]]
is problem of deployment, so I did a clean for the project and then i got this error :
Grave: Exception lors de l'envoi de l'évènement contexte initialisé (context initialized) à l'instance de classe d'écoute (listener) 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
this error is a problem of compatibilities of the SLF4J, so I changed the version from 1.5.8 to 1.7.12 and also I found some duplicated SLF4J packages should be removed from the pom.xml jars because of this error :
SLF4J: Class path contains multiple SLF4J bindings.
also I have this error in the console while starting tomcat:
INFOS: No Spring WebApplicationInitializer types detected on classpath
this a problem in servlet-api, I am using the version 2.5 so to solve it I changed to the version 3.0.1
<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.0.1</version> </dependency>
and all problems is gone and spring logging is working fine :D