[ 
http://issues.apache.org/jira/browse/IBATIS-193?page=comments#action_12330498 ] 

Sven Boden commented on IBATIS-193:
-----------------------------------

Commons logging has a discovery process for determining which kind of logging 
to use. My hunch would be that you somehow you explicitly order Commons logging 
to use Log4J. Which explains your cases:

1) commons-logging.jar and log4j.jar in classpath... iBATIS uses commons 
logging and that internally uses log4j (forced by you, but would be the first 
default anyway)
2) log4j in classpath... iBATIS uses log4j, commons logging not involved
3) commons-logging.jar but no log4j.jar in classpath... iBATIS uses 
commons-logging.jar and if you're using only defaults commons logging will 
first try log4j, JDK1.4, JDK1.3 and SimpleLog... but in your case it fails when 
log4j.jar is not present.

For 3) I assume you force commons logging to use log4j which isn't in the 
classpath, a lot of times this is forced via the commons logging properties 
file: commons-logging.properties
Can you look for that file and report back the contents... Hint: if it mentions 
log4j you have found the culprit.

If you want to debug yourself a bit, look at the class: 
com.ibatis.common.logging.LogFactory. This is where the logging in iBATIS is 
set up.

Regards,
Sven


> Hidden jar dependicity for iBatis DBL 2.1.5
> -------------------------------------------
>
>          Key: IBATIS-193
>          URL: http://issues.apache.org/jira/browse/IBATIS-193
>      Project: iBatis for Java
>         Type: Bug
>   Components: SQL Maps
>     Versions: 2.1.5
>  Environment: JDK 1.4.2
> Tomcat 4.1.x
>     Reporter: Dimiter Kapitanov
>     Priority: Minor

>
> This issue occurs only if you have commons-logging.jar in your classpath (but 
> NO log4j.jar !) : 
> java.lang.NoClassDefFoundError
>       at 
> com.ibatis.sqlmap.engine.builder.xml.SqlMapConfigParser.<init>(SqlMapConfigParser.java:53)
>       at 
> com.ibatis.sqlmap.engine.builder.xml.SqlMapConfigParser.<init>(SqlMapConfigParser.java:40)
>       at 
> com.ibatis.sqlmap.client.SqlMapClientBuilder.buildSqlMapClient(SqlMapClientBuilder.java:78)
>       at astarot.persist.Helper.initPersistance(Helper.java:94)
>       at dsk.jt.JTLogic.configureApplication(JTLogic.java:137)
>       at dsk.jt.JTLogic.<init>(JTLogic.java:43)
>       at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
>       at 
> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
>       at 
> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
>       at java.lang.reflect.Constructor.newInstance(Constructor.java:274)
>       at java.lang.Class.newInstance0(Class.java:308)
>       at java.lang.Class.newInstance(Class.java:261)
>       at astarot.dominator.web.ActionServlet.init(ActionServlet.java:169)
>       at javax.servlet.GenericServlet.init(GenericServlet.java:256)
>       at 
> org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:935)
>       at 
> org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:668)
>       at 
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
>       at 
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
>       at 
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
>       at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
>       at 
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
>       at 
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
>       at 
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
>       at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
>       at 
> org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2422)
>       at 
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
>       at 
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
>       at 
> org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
>       at 
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
>       at 
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:163)
>       at 
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
>       at 
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
>       at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
>       at 
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
>       at 
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
>       at 
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
>       at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
>       at 
> org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:199)
>       at 
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:828)
>       at 
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:700)
>       at 
> org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:584)
>       at 
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
>       at java.lang.Thread.run(Thread.java:534)
> The row in astarot.persist.Helper where exception occurs is :
> SqlMapClient mapper = SqlMapClientBuilder.buildSqlMapClient(reader, props);
> This exception won't occur if you have both commons-logging.jar and log4j.jar 
> in the classpath, or even only log4j.jar.
> All is OK in case you do not have both jars (but then logging is off).
> I have looked in sources but was not able to find the reason. 
> Take this report (and the workaround) as time saver, if someone comes in same 
> situation.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to