Tomcat 7 - java.lang.NoClassDefFoundError:org / apache / log4j / spi / ThrowableInformation

时间:2012-03-26 12:55:50

标签: java log4j tomcat7

我面临以下例外:

Mar 26, 2012 1:20:34 PM org.apache.catalina.loader.WebappClassLoader loadClass
INFO: Illegal access: this web application instance has been stopped already.  
Could not   load org.apache.log4j.spi.ThrowableInformation.  
The eventual following stack trace is caused by an error thrown for debugging purposes 
as well as to attempt to terminate the thread which caused the illegal access, and has  
no functional impact.
java.lang.IllegalStateException
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1562)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521)
at org.apache.log4j.spi.LoggingEvent.<init>(LoggingEvent.java:165)
at org.apache.log4j.Category.forcedLog(Category.java:391)
at org.apache.log4j.Category.error(Category.java:322)
at com.abc.supervisionmanager.Monitoring.run(Monitoring.java:205)
at java.lang.Thread.run(Thread.java:662)
Exception in thread "Thread_Monitoring" java.lang.NoClassDefFoundError: org/apache/log4j/spi/ThrowableInformation
at org.apache.log4j.spi.LoggingEvent.<init>(LoggingEvent.java:165)
at org.apache.log4j.Category.forcedLog(Category.java:391)
at org.apache.log4j.Category.error(Category.java:322)
at com.abc.supervisionmanager.Monitoring.run(Monitoring.java:205)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.ClassNotFoundException: org.apache.log4j.spi.ThrowableInformation
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1676)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521)
... 5 more

我搜索了这个异常并发现大多数答案都指出它是tomcat 5.5中的错误,它将在版本5.5.28中解决。

但是我目前正在使用tomcat 7.11和log4j-1.2.16.jar我仍然面临同样的问题。

4 个答案:

答案 0 :(得分:9)

对我来说,这个问题的解决方案(使用Openbravo 3.0MP11和Tomcat 7.0.21测试)是:

  1. log4j-1.2.16.jar
  2. 中删除WEB-INF/lib
  3. 将log4j jar放入Tomcat的lib目录中。在Ubuntu 11.10中,这将是/usr/share/tomcat7/lib
  4. 请注意我的Openbravo特定用例:这确实解决了log4j问题,但后来遇到了其他问题。

答案 1 :(得分:2)

听起来这是你的图书馆的一个问题。您确定在Webapp的WEB-INF/lib文件夹中有Log4J jar文件吗?

答案 2 :(得分:0)

如何解决它。对我来说:

  
      
  1. try {} catch()log4j exception throw。
  2.   
  3. 再次运行tomcat以找到真正的问题
  4.   
  5. 解决实际问题并删除try {} catch()
  6.   

log4j和tomcat没有问题。它会抛出异常,因为你的一些代码在webapp init中运行错误。也许xml或config是错误的。

答案 3 :(得分:0)

我在portlet(liferay 6.2 Tomcat软件包)中遇到了这个问题。我通过删除导致异常的部署(在tomcat webapps文件夹中),清理并重新部署(使用maven-liferay:deploy)该portlet来解决了该问题。