java.lang.NoClassDefFoundError: Lorg/slf4j/Logger;

时间:2021-09-04 12:33:00

如果你出现类似如下错误

1. Install tomcat7 in my home directory and set up `CATALINA_HOME`
environment variable in `.bashrc`
2. Install oracle-java and setup JAVA_HOME in `.bashrc`
3. Install Netbeans 7 and import the project in it.
4. Since, the Netbeans came with `glassfish` as default server, I added
a tomcat as the server with proper configuration.
5. I try running the application (through Netbeans), and I receive the following error: Jun 04, 2013 2:39:58 AM org.apache.catalina.core.AprLifecycleListener init
2 INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/java/packages/lib/amd64:/usr/lib64:/lib64:/ lib:/usr/lib
3 Jun 04, 2013 2:39:59 AM org.apache.coyote.AbstractProtocol init
4 INFO: Initializing ProtocolHandler ["http-bio-8080"]
5 Jun 04, 2013 2:39:59 AM org.apache.coyote.AbstractProtocol init
6 INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
7 Jun 04, 2013 2:39:59 AM org.apache.catalina.startup.Catalina load
8 INFO: Initialization processed in 1100 ms
9 Jun 04, 2013 2:39:59 AM org.apache.catalina.core.StandardService startInternal
10 INFO: Starting service Catalina
11 Jun 04, 2013 2:39:59 AM org.apache.catalina.core.StandardEngine startInternal
12 INFO: Starting Servlet Engine: Apache Tomcat/7.0.40
13 Jun 04, 2013 2:39:59 AM org.apache.catalina.startup.HostConfig deployDescriptor
14 INFO: Deploying configuration descriptor /home/frrole/apache-tomcat-7.0.40/conf/Catalina/localhost/ws.xml
15 Jun 04, 2013 2:39:59 AM org.apache.catalina.startup.HostConfig deployDescriptor
16 WARNING: A docBase /home/frrole/apache-tomcat-7.0.40/webapps/projectfrrole/target/ws inside the host appBase has been specified, and will be ignored
17 Jun 04, 2013 2:40:00 AM org.apache.catalina.core.ContainerBase addChildInternal
18 SEVERE: ContainerBase.addChild: start:
19 org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/ws]]
20 at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
21 at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
22 at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
23 at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
24 at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:657)
25 at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1636)
26 at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
27 at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
28 at java.util.concurrent.FutureTask.run(FutureTask.java:166)
29 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
30 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
31 at java.lang.Thread.run(Thread.java:722)
32 Caused by: java.lang.NoClassDefFoundError: Lorg/slf4j/Logger;
33 at java.lang.Class.getDeclaredFields0(Native Method)
34 at java.lang.Class.privateGetDeclaredFields(Class.java:2317)
35 at java.lang.Class.getDeclaredFields(Class.java:1762)
36 at org.apache.catalina.util.Introspection.getDeclaredFields(Introspection.java:106)
37 at org.apache.catalina.startup.WebAnnotationSet.loadFieldsAnnotation(WebAnnotationSet.java:261)
38 at org.apache.catalina.startup.WebAnnotationSet.loadApplicationServletAnnotations(WebAnnotationSet.java:140)
39 at org.apache.catalina.startup.WebAnnotationSet.loadApplicationAnnotations(WebAnnotationSet.java:67)
40 at org.apache.catalina.startup.ContextConfig.applicationAnnotationsConfig(ContextConfig.java:405)
41 at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:881)
42 at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:369)
43 at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
44 at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
45 at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5269)
46 at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
47 ... 11 more
48 Caused by: java.lang.ClassNotFoundException: org.slf4j.Logger
49 at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714)

那么原因暂时有两种:

1、你的项目没有依赖slf4j-log4j12.jar

2、如果你依赖了slf4j-log4j12.jar,那么请检测是否也依赖了slf4j-api.jar,他们会冲突,把slf4j-api.jar干掉吧

相关:

关于NoClassDefFoundError和ClassNotFoundException异常