You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@struts.apache.org by "emmanuel.boudrant" <b7...@yahoo.fr> on 2002/04/22 15:22:26 UTC

commons-digester and ClassLoader troubles

 Hello everybody,

I want parse a Xml config file with the Digester placed now in Jakarta 
Commons. I'm under Tomcat 3.2.1 so I replace my jaxp.jar by xerces.jar 
(version 1.3.1) in my tomcat/lib.

...and when I launch my application, I've got a ClassNotFoundException 
on a class (com.cross.strutsext.validator.RuleBean), this class can be 
found in my webapps classes directory.

Is there any trouble with Tomcat ClassLoader ?

Here my code :

        (...) Digester digester = new Digester();
        digester.push(this);

        // digester version commons
        digester.setUseContextClassLoader(true);
        digester.setLogger(new 
org.apache.commons.logging.impl.Log4JCategoryLog(log));
        // digester version commons

        digester.setValidating(false); (...)

Here the message:

DEBUG 2002-04-22 13:30:37,047 [main] - 
setDocumentLocator(org.apache.xerces.readers.DefaultEntityHandler@29ab3e)

DEBUG 2002-04-22 13:30:37,047 [main] - startDocument()

DEBUG 2002-04-22 13:30:37,047 [main] - startElement(,,form-rules)

DEBUG 2002-04-22 13:30:37,047 [main] -   Pushing body text ''

DEBUG 2002-04-22 13:30:37,266 [main] -   New match='form-rules'

DEBUG 2002-04-22 13:30:37,266 [main] -   Fire begin() for 
ObjectCreateRule[className=com.cross.strutsext.validator.RuleBean, 
attributeName=className]

DEBUG 2002-04-22 13:30:37,266 [main] - 
[ObjectCreateRule]{form-rules}New com.cross.strutsext.validator.RuleBean

ERROR 2002-04-22 13:30:37,281 [main] - Begin event threw exception

java.lang.ClassNotFoundException: 
com.cross.strutsext.validator.RuleBean

 at java.net.URLClassLoader$1.run(URLClassLoader.java:200)

 at java.security.AccessController.doPrivileged(Native Method)

 at java.net.URLClassLoader.findClass(URLClassLoader.java:188)

 at java.lang.ClassLoader.loadClass(ClassLoader.java:297)

 at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:286)

 at java.lang.ClassLoader.loadClass(ClassLoader.java:253)

 at 
org.apache.commons.digester.ObjectCreateRule.begin(ObjectCreateRule.java:187)

 at 
org.apache.commons.digester.Digester.startElement(Digester.java:1029)

 at 
org.apache.xerces.parsers.SAXParser.startElement(SAXParser.java:1376)

 at 
org.apache.xerces.validators.common.XMLValidator.callStartElement(XMLValidator.java:1170)

 at 
org.apache.xerces.framework.XMLDocumentScanner$ContentDispatcher.dispatch(XMLDocumentScanner.java:994)

 at 
org.apache.xerces.framework.XMLDocumentScanner.parseSome(XMLDocumentScanner.java:381)





---------------------------------
Yahoo! Mail -- Une adresse @yahoo.fr gratuite et en français !

Re: commons-digester and ClassLoader troubles

Posted by "emmanuel.boudrant" <b7...@yahoo.fr>.
Ok, I found 1 solution, I put this:


digester.setClassLoader(this.getClass().getClassLoader());

 instead of 

digester.setUseContextClassLoader(true);

But now my question is, in the file ActionServlet.java, the code is digester.setUseContextClassLoader(true); ... so why is it working on Struts1.1b1 and not on my class ;) ?

 

Regards,

emmanuel.boudrant

 

  "emmanuel.boudrant" <b7...@yahoo.fr> a écrit : 
Hello everybody,

I want parse a Xml config file with the Digester placed now in Jakarta 
Commons. I'm under Tomcat 3.2.1 so I replace my jaxp.jar by xerces.jar 
(version 1.3.1) in my tomcat/lib.

...and when I launch my application, I've got a ClassNotFoundException 
on a class (com.cross.strutsext.validator.RuleBean), this class can be 
found in my webapps classes directory.

Is there any trouble with Tomcat ClassLoader ?

Here my code :

(...) Digester digester = new Digester();
digester.push(this);

// digester version commons
digester.setUseContextClassLoader(true);
digester.setLogger(new 
org.apache.commons.logging.impl.Log4JCategoryLog(log));
// digester version commons

digester.setValidating(false); (...)

Here the message:

DEBUG 2002-04-22 13:30:37,047 [main] - 
setDocumentLocator(org.apache.xerces.readers.DefaultEntityHandler@29ab3e)

DEBUG 2002-04-22 13:30:37,047 [main] - startDocument()

DEBUG 2002-04-22 13:30:37,047 [main] - startElement(,,form-rules)

DEBUG 2002-04-22 13:30:37,047 [main] - Pushing body text ''

DEBUG 2002-04-22 13:30:37,266 [main] - New match='form-rules'

DEBUG 2002-04-22 13:30:37,266 [main] - Fire begin() for 
ObjectCreateRule[className=com.cross.strutsext.validator.RuleBean, 
attributeName=className]

DEBUG 2002-04-22 13:30:37,266 [main] - 
[ObjectCreateRule]{form-rules}New com.cross.strutsext.validator.RuleBean

ERROR 2002-04-22 13:30:37,281 [main] - Begin event threw exception

java.lang.ClassNotFoundException: 
com.cross.strutsext.validator.RuleBean

at java.net.URLClassLoader$1.run(URLClassLoader.java:200)

at java.security.AccessController.doPrivileged(Native Method)

at java.net.URLClassLoader.findClass(URLClassLoader.java:188)

at java.lang.ClassLoader.loadClass(ClassLoader.java:297)

at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:286)

at java.lang.ClassLoader.loadClass(ClassLoader.java:253)

at 
org.apache.commons.digester.ObjectCreateRule.begin(ObjectCreateRule.java:187)

at 
org.apache.commons.digester.Digester.startElement(Digester.java:1029)

at 
org.apache.xerces.parsers.SAXParser.startElement(SAXParser.java:1376)

at 
org.apache.xerces.validators.common.XMLValidator.callStartElement(XMLValidator.java:1170)

at 
org.apache.xerces.framework.XMLDocumentScanner$ContentDispatcher.dispatch(XMLDocumentScanner.java:994)

at 
org.apache.xerces.framework.XMLDocumentScanner.parseSome(XMLDocumentScanner.java:381)





---------------------------------
Yahoo! Mail -- Une adresse @yahoo.fr gratuite et en français !



---------------------------------
Yahoo! Mail -- Une adresse @yahoo.fr gratuite et en français !