Java Mailing List Archive

http://www.junlu.com/

Home » Home (12/2007) » Apache Tomcat »

Still have log4j and CLASSPATH problems on linux

Oren Livne

2007-02-06

Replies:

Dear Gaurav and everyone,

Thanks so much for your help. The explanations were good and helped me
better understand how the tomcat classloader works. However, I still
have a problem running my web application. In short, the exception is
"java.lang.NoClassDefFoundError: org/apache/log4j/Category"; see below.
I tried removing files, moving jar files, and sometimes got "Logger" not
found, or "inconsistent hierarchy --you have more than one logger". By
the way, it all works perfectly on my windows desktop with MyEclipse 5.1
and the same classpath, or at least I think it's the same.

I know it's because commons-logging.jar, commons-logging-api.jar and
log4-1.2.11.jar ahve some API conflicts. I didn't understand the
explanations on why, and didn't find anywhere the steps to follow to get
it to work (which is all I care about!). Can someone please help outline
the steps I need to do to get my app to work?

Thanks so much in advance.
Oren
---------
Here's my system info and the stack trace I get when I access my app
after tomcat is started:
- Tomcat 6.0.7-beta
- My web app uses Struts 1.3.5 and Hibernate 3.2.1 GA
- $tomcat_home/lib contains: (I copied the Struts and Hibernate libs
over here)
annotations-api.jar        commons-validator-1.3.0.jar
mysql-connector-java-3.1.10-bin.jar
ant-1.6.5.jar            concurrent-1.3.2.jar      oro-2.0.8.jar
ant-antlr-1.6.5.jar        connector.jar           oscache-2.1.jar
ant-junit-1.6.5.jar        dom4j-1.6.1.jar        
proxool-0.8.3.jar
ant-launcher-1.6.5.jar      ehcache-1.2.3.jar        servlet-api.jar
antlr-2.7.6.jar           ejb3-persistence.jar      standard.jar
ant-swing-1.6.5.jar        el-api.jar            
struts-core-1.3.5.jar
asm-attrs.jar            hibernate3.jar          
struts-el-1.3.5.jar
asm.jar                hibernate-annotations.jar  
struts-extras-1.3.5.jar
bsf-2.3.0.jar            jaas.jar              
struts-faces-1.3.5.jar
c3p0-0.9.0.jar           jacc-1_0-fr.jar        
struts-mailreader-dao-1.3.5.jar
catalina-ant.jar          jasper-el.jar          
struts-scripting-1.3.5.jar
catalina-ha.jar           jasper.jar            
struts-taglib-1.3.5.jar
catalina.jar             jasper-jdt.jar          
struts-tiles-1.3.5.jar
catalina-tribes.jar        javassist.jar          
swarmcache-1.0rc2.jar
cglib-2.1.3.jar           jaxen-1.1-beta-7.jar      syndiag2.jar
checkstyle-all.jar         jboss-cache.jar        
tomcat-coyote.jar
cleanimports.jar          jboss-common.jar         tomcat-dbcp.jar
commons-beanutils-1.7.0.jar   jboss-jmx.jar          
tomcat-i18n-es.jar
commons-chain-1.1.jar       jboss-system.jar        
tomcat-i18n-fr.jar
commons-collections-2.1.1.jar jdbc2_0-stdext.jar      
tomcat-i18n-ja.jar
commons-digester-1.6.jar     jgroups-2.2.8.jar        versioncheck.jar
commons-fileupload-1.1.1.jar  jsp-api.jar            
version.properties
commons-io-1.1.jar         jstl.jar              xerces-2.6.2.jar
commons-lang-2.2.jar       jta.jar               xml-apis.jar
commons-logging-1.0.4.jar    junit-3.8.1.jar

- my webapp WEB-INF/lib contains:
log4j-1.2.11.jar

- Exception stack trace:

org.apache.jasper.JasperException: javax.servlet.ServletException:
java.lang.ExceptionInInitializerError
org.apache.jasper.servlet.JspServletWrapper.handleJspException (JspServletWrapper.java:565)
org.apache.jasper.servlet.JspServletWrapper.service (JspServletWrapper.java:414)
org.apache.jasper.servlet.JspServlet.serviceJspFile (JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service (JspServlet.java:266)
javax.servlet.http.HttpServlet.service (HttpServlet.java:803)
*root cause*
javax.servlet.ServletException: java.lang.ExceptionInInitializerError
org.apache.jasper.runtime.PageContextImpl.doHandlePageException (PageContextImpl.java:855)
org.apache.jasper.runtime.PageContextImpl.handlePageException (PageContextImpl.java:784)
org.apache.jsp.default_jsp._jspService(default_jsp.java:76)
org.apache.jasper.runtime.HttpJspBase.service (HttpJspBase.java:98)
javax.servlet.http.HttpServlet.service (HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service (JspServletWrapper.java:390)
org.apache.jasper.servlet.JspServlet.serviceJspFile (JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service (JspServlet.java:266)
javax.servlet.http.HttpServlet.service (HttpServlet.java:803)
*root cause*
java.lang.ExceptionInInitializerError
org.apache.struts.taglib.logic.RedirectTag.<clinit>(RedirectTag.java:43)
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
sun.reflect.NativeConstructorAccessorImpl.newInstance (NativeConstructorAccessorImpl.java:39)
sun.reflect.DelegatingConstructorAccessorImpl.newInstance (DelegatingConstructorAccessorImpl.java:27)
java.lang.reflect.Constructor.newInstance (Constructor.java:513)
java.lang.Class.newInstance0 (Class.java:355)
java.lang.Class.newInstance (Class.java:308)
org.apache.jasper.runtime.TagHandlerPool.get (TagHandlerPool.java:126)
org.apache.jsp.default_jsp._jspx_meth_logic_005fredirect_005f0(default_jsp.java:88)
org.apache.jsp.default_jsp._jspService(default_jsp.java:67)
org.apache.jasper.runtime.HttpJspBase.service (HttpJspBase.java:98)
javax.servlet.http.HttpServlet.service (HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service (JspServletWrapper.java:390)
org.apache.jasper.servlet.JspServlet.serviceJspFile (JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service (JspServlet.java:266)
javax.servlet.http.HttpServlet.service (HttpServlet.java:803)
*root cause*
org.apache.commons.logging.LogConfigurationException:
org.apache.commons.logging.LogConfigurationException: No suitable Log
constructor [Ljava.lang.Class;@(protected)
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;@(protected)
org.apache.commons.logging.impl.Log4JLogger (Caused by
java.lang.NoClassDefFoundError: org/apache/log4j/Category))
org.apache.commons.logging.impl.LogFactoryImpl.newInstance (LogFactoryImpl.java:543)
org.apache.commons.logging.impl.LogFactoryImpl.getInstance (LogFactoryImpl.java:235)
org.apache.commons.logging.impl.LogFactoryImpl.getInstance (LogFactoryImpl.java:209)
org.apache.commons.logging.LogFactory.getLog (LogFactory.java:351)
org.apache.struts.util.MessageResources.<clinit>(MessageResources.java:54)
org.apache.struts.taglib.logic.RedirectTag.<clinit>(RedirectTag.java:43)
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
sun.reflect.NativeConstructorAccessorImpl.newInstance (NativeConstructorAccessorImpl.java:39)
sun.reflect.DelegatingConstructorAccessorImpl.newInstance (DelegatingConstructorAccessorImpl.java:27)
java.lang.reflect.Constructor.newInstance (Constructor.java:513)
java.lang.Class.newInstance0 (Class.java:355)
java.lang.Class.newInstance (Class.java:308)
org.apache.jasper.runtime.TagHandlerPool.get (TagHandlerPool.java:126)
org.apache.jsp.default_jsp._jspx_meth_logic_005fredirect_005f0(default_jsp.java:88)
org.apache.jsp.default_jsp._jspService(default_jsp.java:67)
org.apache.jasper.runtime.HttpJspBase.service (HttpJspBase.java:98)
javax.servlet.http.HttpServlet.service (HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service (JspServletWrapper.java:390)
org.apache.jasper.servlet.JspServlet.serviceJspFile (JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service (JspServlet.java:266)
javax.servlet.http.HttpServlet.service (HttpServlet.java:803)
*root cause*
org.apache.commons.logging.LogConfigurationException: No suitable Log
constructor [Ljava.lang.Class;@(protected)
org.apache.commons.logging.impl.Log4JLogger (Caused by
java.lang.NoClassDefFoundError: org/apache/log4j/Category)
org.apache.commons.logging.impl.LogFactoryImpl.getLogConstructor (LogFactoryImpl.java:413)
org.apache.commons.logging.impl.LogFactoryImpl.newInstance (LogFactoryImpl.java:529)
org.apache.commons.logging.impl.LogFactoryImpl.getInstance (LogFactoryImpl.java:235)
org.apache.commons.logging.impl.LogFactoryImpl.getInstance (LogFactoryImpl.java:209)
org.apache.commons.logging.LogFactory.getLog (LogFactory.java:351)
org.apache.struts.util.MessageResources.<clinit>(MessageResources.java:54)
org.apache.struts.taglib.logic.RedirectTag.<clinit>(RedirectTag.java:43)
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
sun.reflect.NativeConstructorAccessorImpl.newInstance (NativeConstructorAccessorImpl.java:39)
sun.reflect.DelegatingConstructorAccessorImpl.newInstance (DelegatingConstructorAccessorImpl.java:27)
java.lang.reflect.Constructor.newInstance (Constructor.java:513)
java.lang.Class.newInstance0 (Class.java:355)
java.lang.Class.newInstance (Class.java:308)
org.apache.jasper.runtime.TagHandlerPool.get (TagHandlerPool.java:126)
org.apache.jsp.default_jsp._jspx_meth_logic_005fredirect_005f0(default_jsp.java:88)
org.apache.jsp.default_jsp._jspService(default_jsp.java:67)
org.apache.jasper.runtime.HttpJspBase.service (HttpJspBase.java:98)
javax.servlet.http.HttpServlet.service (HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service (JspServletWrapper.java:390)
org.apache.jasper.servlet.JspServlet.serviceJspFile (JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service (JspServlet.java:266)
javax.servlet.http.HttpServlet.service (HttpServlet.java:803)
*root cause*
java.lang.NoClassDefFoundError: org/apache/log4j/Category
java.lang.Class.getDeclaredConstructors0(Native Method)
java.lang.Class.privateGetDeclaredConstructors (Class.java:2389)
java.lang.Class.getConstructor0 (Class.java:2699)
java.lang.Class.getConstructor (Class.java:1657)
org.apache.commons.logging.impl.LogFactoryImpl.getLogConstructor (LogFactoryImpl.java:410)
org.apache.commons.logging.impl.LogFactoryImpl.newInstance (LogFactoryImpl.java:529)
org.apache.commons.logging.impl.LogFactoryImpl.getInstance (LogFactoryImpl.java:235)
org.apache.commons.logging.impl.LogFactoryImpl.getInstance (LogFactoryImpl.java:209)
org.apache.commons.logging.LogFactory.getLog (LogFactory.java:351)
org.apache.struts.util.MessageResources.<clinit>(MessageResources.java:54)
org.apache.struts.taglib.logic.RedirectTag.<clinit>(RedirectTag.java:43)
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
sun.reflect.NativeConstructorAccessorImpl.newInstance (NativeConstructorAccessorImpl.java:39)
sun.reflect.DelegatingConstructorAccessorImpl.newInstance (DelegatingConstructorAccessorImpl.java:27)
java.lang.reflect.Constructor.newInstance (Constructor.java:513)
java.lang.Class.newInstance0 (Class.java:355)
java.lang.Class.newInstance (Class.java:308)
org.apache.jasper.runtime.TagHandlerPool.get (TagHandlerPool.java:126)
org.apache.jsp.default_jsp._jspx_meth_logic_005fredirect_005f0(default_jsp.java:88)
org.apache.jsp.default_jsp._jspService(default_jsp.java:67)
org.apache.jasper.runtime.HttpJspBase.service (HttpJspBase.java:98)
javax.servlet.http.HttpServlet.service (HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service (JspServletWrapper.java:390)
org.apache.jasper.servlet.JspServlet.serviceJspFile (JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service (JspServlet.java:266)
javax.servlet.http.HttpServlet.service (HttpServlet.java:803)
*note* _The full stack trace of the root cause is available in the
Apache Tomcat/6.0.7 logs._
------------------------------------------------------------------------
Apache Tomcat/6.0.7



Gaurav Kushwaha wrote:
> Log4j loads "log4j.properties" from the classpath of the classloader that
> loaded itself(log4j classes). In your case, log4j is loaded by tomcat
> classloader, since it is present in $TOMCAT_HOME/lib. Classes and files
> under WEB-INF/classes are not visible to that classloader, hence the
> problem.
>
> Regards,
> Gaurav Singh Kushwaha
> http://www.chakpak.com


---------------------------------------------------------------------
To start a new topic, e-mail: users@(protected)
To unsubscribe, e-mail: users-unsubscribe@(protected)
For additional commands, e-mail: users-help@(protected)

©2008 junlu.com - Jax Systems, LLC, U.S.A.