I have an application that explicitly constructs and uses various instances of java.net.URLClassLoader. I use one to load Axis beta1. When I try to use Axis (specifically, org.apache.axis.utils.XMLUtils#newDocument), something goes wrong. Here is a typescript, showing first a debugging printout of a relevant classpath and then (some rendition of) the exception that arises:
Setting context ClassLoader to: ClassLoader com.ibm.wsstk.common.WsstkClassLoader@258f1822: has 1 URLS: file:/c:/mspreitz/build/wsstk/lib/wsstk.jar Has parent: ClassLoader com.ibm.wsstk.common.WsstkClassLoader@258d9822: has 1 URLS: file:/c:/xml-axis-beta1/lib/clutil.jar Has parent: ClassLoader com.ibm.wsstk.common.WsstkClassLoader@25881822: has 1 URLS: file:/c:/xml-axis-beta1/lib/wsdl4j.jar Has parent: ClassLoader com.ibm.wsstk.common.WsstkClassLoader@25b69822: has 1 URLS: file:/c:/xml-axis-beta1/lib/log4j-core.jar Has parent: ClassLoader com.ibm.wsstk.common.WsstkClassLoader@25b51822: has 1 URLS: file:/c:/xml-axis-beta1/lib/axis.jar Has parent: ClassLoader com.ibm.wsstk.common.WsstkClassLoader@25b39822: has 1 URLS: file:/c:/xml-axis-beta1/lib/tt-bytecode.jar Has parent: ClassLoader com.ibm.wsstk.common.WsstkClassLoader@25be1822: has 1 URLS: file:/c:/xml-axis-beta1/lib/commons-logging.jar Has parent: ClassLoader com.ibm.wsstk.common.WsstkClassLoader@25bc9822: has 1 URLS: file:/c:/xml-axis-beta1/lib/jaxrpc.jar Has parent: ClassLoader com.ibm.wsstk.common.WsstkClassLoader@25bb1822: has 1 URLS: file:/c:/xerces-1_4_4/xerces.jar Has parent: ClassLoader com.ibm.wsstk.common.WsstkClassLoader@25b99822: has 0 URLS: Has parent: ClassLoader sun.misc.Launcher$AppClassLoader@25a21822: has 1 URLS: file:/C:/mspreitz/build/wsstk/lib/boot.jar Has parent: ClassLoader sun.misc.Launcher$ExtClassLoader@25a01822: has 10 URLS: file:/C:/Program%20Files/IBM/Java13/jre/lib/ext/cmpcrmf.jar file:/C:/Program%20Files/IBM/Java13/jre/lib/ext/gskikm.jar file:/C:/Program%20Files/IBM/Java13/jre/lib/ext/IBMJCEfw.jar file:/C:/Program%20Files/IBM/Java13/jre/lib/ext/IBMJCEProvider.jar file:/C:/Program%20Files/IBM/Java13/jre/lib/ext/ibmjsse.jar file:/C:/Program%20Files/IBM/Java13/jre/lib/ext/ibmpkcs.jar file:/C:/Program%20Files/IBM/Java13/jre/lib/ext/indicim.jar file:/C:/Program%20Files/IBM/Java13/jre/lib/ext/JawBridge.jar file:/C:/Program%20Files/IBM/Java13/jre/lib/ext/local_policy.jar file:/C:/Program%20Files/IBM/Java13/jre/lib/ext/US_export_policy.jar No parent. --------- UNCAUGHT EXCEPTION --------- java.lang.ExceptionInInitializerError: org.apache.commons.logging.LogConfigurationException: java.lang.reflect.InvocationTargetException at org.apache.commons.logging.impl.LogFactoryImpl.newInstance(LogFactoryImpl.java:509) at org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:285) at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:400) at org.apache.axis.utils.XMLUtils.<clinit>(Unknown Source) at ... The elided stack portion is my application (and all the JFC junk involved in invoking it). The class com.ibm.wsstk.common.WsstkClassLoader extends java.net.URLClassLoader purely by adding stuff --- no methods are overridden. To make Xerces (v2, at least) happy, I am calling Thread.setContextClassLoader before this (in the same thread), passing the ClassLoader described by the printout above. The printout traces the delegation path from the class loader in question, as long as the loader is a URLClassLoader, printing the URLs at each step. I am using Axis beta1, Xerces 1.4.4, and IBM's JDK 1.3 (with its copy of Xerces and XML4J removed from jre/lib/ext/ for testing purposes). Why are Axis & Commons logging doing this to me? I am trying to keep the appropriate classpath current, and do not understand why they are assaulting me thus. Thanks, Mike