Tomcat 7 - java.lang.NoClassDefFoundError: org/apache/log4j/spi/ThrowableInformation
Я столкнулся со следующим Исключением:
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. Я все еще сталкиваюсь с той же проблемой.
Ответы
Ответ 1
Для меня решение этой проблемы (протестировано с Openbravo 3.0MP11 и Tomcat 7.0.21):
- Удалите
log4j-1.2.16.jar
из WEB-INF/lib
.
- Поместите лог log4j в каталог Tomcat lib. В Ubuntu 11.10 это будет
/usr/share/tomcat7/lib
Примечание для моего конкретного случая использования Openbravo: это решает проблему log4j, но затем я столкнулся с другими проблемами.
Ответ 2
Похоже, что это проблема с вашими библиотеками. Вы уверены, что у вас есть файл журнала Log4J в папке WEB-INF/lib
вашего веб-клиента?
Ответ 3
Как это решить. Для меня:
- try {} catch() log4j exception throw.
- снова запустите tomcat, чтобы найти реальную проблему.
- решить настоящую проблему и удалить try {} catch()
Это не проблема для log4j и tomcat. Это вызовет исключение, потому что некоторая ошибка вашего кода в webapp init. Возможно, xml или config - ошибка.
Ответ 4
Я получил ту же ошибку в catalina.out, но обнаружил ошибку в начале:
2016-3-18 16:44:59 org.apache.catalina.core.StandardServer await
StandardServer.await: create[localhost:8291]:
java.net.BindException: Address already in use
Наконец, настоящей причиной является порт.