Работя по Java/J2EE проект с няколко уеб приложения. Искам да въведа log4j в някои уеб приложения. Така че добавих log4j-1.2.16.jar в WEB-INF\lib и log4j.properties в WEB-INF\classes
В резултат на това получавам NoClassDefFoundError:
org.apache.commons.logging.LogConfigurationException:org.apache.commons.logging.LogConfigurationException: No suitable Log constructor [Ljava.lang.Class;@f8f541 for org.apache.commons.logging.impl.Log4JLogger (Caused by java.lang.NoClassDefFoundError: org/apache/log4j/Category) (Caused by org.apache.commons.logging.LogConfigurationException: No suitable Log constructor [Ljava.lang.Class;@f8f541 for org.apache.commons.logging.impl.Log4JLogger (Caused by java.lang.NoClassDefFoundError: org/apache/log4j/Category))
at org.apache.commons.logging.impl.LogFactoryImpl.newInstance(LogFactoryImpl.java:543)
at org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:235)
at org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:209)
at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:351)
Получавам същата грешка, когато се опитам да инсталирам log4j директно в Tomcat. (Добавих правилните буркани в tomcat/lib и т.н... както е казано тук: http://tomcat.apache.org/tomcat-7.0-doc/logging.html#Using_Log4j)
Открих, че грешката вероятно идва от проблем с loadloader, поради commons.logging jar, съдържащ се в трета страна. Наистина, когато премахна този буркан от третата страна, NoClassDefFoundError изчезва. ([3rd party]/Bin/commons-logging-1.0.4.jar).
Но не трябва да махам буркана от трета страна, той се използва някъде другаде.
Възможно ли е да се конфигурира общата регистрация да игнорира log4j при зареждане или има друг начин за преодоляване на този проблем с зареждащия клас?
Опитвам се да използвам log4j-1.2.16.jar, а третата страна съдържа commons-logging-1.0.4.jar. Моят файл log4j.properties е този по подразбиране, предложен от apache в предишната връзка.