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 !