I have solved the problem below. The solution involved changing a couple of the Tomcat source files due to Digester instances not using the correct Classloader upon Tomcat startup.
The changes I made are as follows: 1) in Catalina.java: /** * Create and configure the Digester we will be using for startup. */ protected Digester createStartDigester() { // Initialize the digester Digester digester = new Digester(); + digester.setClassLoader(this.getClass().getClassLoader()); 2) in ContextConfig.java: /** * Create (if necessary) and return a Digester configured to process the * web application deployment descriptor (web.xml). */ private static Digester createWebDigester() { URL url = null; Digester webDigester = new Digester(); + webDigester.setClassLoader(ContextConfig.class.getClassLoader()); 3) Replace the .class files from the above two files into c:\tomcat\server\lib\Catalina.jar That's it! My application now starts up correctly and uses its internal instance of digester doesn't conflict with Tomcat's version. And in the process, I've learned a lot about Classloaders :) Matt Kruse > -----Original Message----- > From: Kruse, Matt > Sent: Monday, September 22, 2003 11:08 AM > To: '[EMAIL PROTECTED]' > Subject: Using Digester in a Tomcat project causes server not > to start? > > > I know I'm ignorant in some areas of this problem, so please > forgive me if I don't explain it well or if I'm missing > something obvious! > > PROBLEM: Tomcat won't startup (via Eclipse plugin) when > Apache's commons-digester.jar is included as a project lib. > > QUESTION: How can I use the Digester in my project with Tomcat? > > SEE ALSO (appear to reference the same problem): > http://www.mail-archive.com/[EMAIL PROTECTED]/msg4 > 5756.html > http://groups.google.com/groups?selm=c09cb3fc.0307290659.57359 > 042%40posting.google.com > http://www.mail-archive.com/[EMAIL PROTECTED]/ms > g02848.html > > I've narrowed it down to this being the source of the > problem. It looks like it has something to do with > ClassLoaders or something, but I don't know much about that. > I'm confused. > > It's a problem that others have apparently encountered. A > patch to Catalina may solve the problem, but I haven't seen > any posts or messages detailing a work-around. > > Is there a work-around I can use _NOW_ to make my project > work in Tomcat? > > Thanks! > > Matt Kruse > > PS: > > This is the error I get when including Digester in the > dependencies and trying to start Tomcat: > > 2003-09-22 10:22:29,962 0 [main] DEBUG > org.apache.commons.digester.Digester - addRuleSet() with no > namespace URI > 2003-09-22 10:22:29,978 16 [main] DEBUG > org.apache.commons.digester.Digester - addRuleSet() with no > namespace URI > 2003-09-22 10:22:29,978 16 [main] DEBUG > org.apache.commons.digester.Digester - addRuleSet() with no > namespace URI > 2003-09-22 10:22:29,993 31 [main] DEBUG > org.apache.commons.digester.Digester - addRuleSet() with no > namespace URI > 2003-09-22 10:22:29,993 31 [main] DEBUG > org.apache.commons.digester.Digester - addRuleSet() with no > namespace URI > 2003-09-22 10:22:29,993 31 [main] DEBUG > org.apache.commons.digester.Digester - addRuleSet() with no > namespace URI > 2003-09-22 10:22:29,993 31 [main] DEBUG > org.apache.commons.digester.Digester - addRuleSet() with no > namespace URI > 2003-09-22 10:22:29,993 31 [main] DEBUG > org.apache.commons.digester.Digester - addRuleSet() with no > namespace URI > 2003-09-22 10:22:29,993 31 [main] DEBUG > org.apache.commons.digester.Digester - addRuleSet() with no > namespace URI > 2003-09-22 10:22:30,071 109 [main] DEBUG > org.apache.commons.digester.Digester.sax - > setDocumentLocator(org.apache.xerces.parsers.AbstractSAXParser > [EMAIL PROTECTED]) > 2003-09-22 10:22:30,071 109 [main] DEBUG > org.apache.commons.digester.Digester.sax - startDocument() > 2003-09-22 10:22:30,103 141 [main] DEBUG > org.apache.commons.digester.Digester.sax - > startPrefixMapping(xml,http://www.w3.org/XML/1998/namespace) > 2003-09-22 10:22:30,103 141 [main] DEBUG > org.apache.commons.digester.Digester.sax - > startPrefixMapping(xmlns,http://www.w3.org/2000/xmlns/) > 2003-09-22 10:22:30,103 141 [main] DEBUG > org.apache.commons.digester.Digester.sax - startElement(,,Server) > 2003-09-22 10:22:30,103 141 [main] DEBUG > org.apache.commons.digester.Digester - Pushing body text '' > 2003-09-22 10:22:30,103 141 [main] DEBUG > org.apache.commons.digester.Digester - New match='Server' > 2003-09-22 10:22:30,103 141 [main] DEBUG > org.apache.commons.digester.Digester - Fire begin() for > ObjectCreateRule[className=org.apache.catalina.core.StandardSe > rver, attributeName=className] > 2003-09-22 10:22:30,103 141 [main] DEBUG > org.apache.commons.digester.Digester - > [ObjectCreateRule]{Server}New org.apache.catalina.core.StandardServer > 2003-09-22 10:22:30,103 141 [main] ERROR > org.apache.commons.digester.Digester - Begin event threw exception > java.lang.ClassNotFoundException: > org.apache.catalina.core.StandardServer > at java.net.URLClassLoader$1.run(URLClassLoader.java:198) > at java.security.AccessController.doPrivileged(Native Method) > at java.net.URLClassLoader.findClass(URLClassLoader.java:186) > at java.lang.ClassLoader.loadClass(ClassLoader.java:306) > at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:265) > at java.lang.ClassLoader.loadClass(ClassLoader.java:262) > at > org.apache.commons.digester.ObjectCreateRule.begin(ObjectCreat > eRule.java:252) > at org.apache.commons.digester.Rule.begin(Rule.java:200) > at > org.apache.commons.digester.Digester.startElement(Digester.java:1268) > at > org.apache.xerces.parsers.AbstractSAXParser.startElement(Unkno > wn Source) > at > org.apache.xerces.impl.dtd.XMLDTDValidator.startElement(Unknow > n Source) > at > org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanStar > tElement(Unknown Source) > at > org.apache.xerces.impl.XMLDocumentScannerImpl$ContentDispatche > r.scanRootElementHook(Unknown Source) > at > org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$Fragment > ContentDispatcher.dispatch(Unknown Source) > at > org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocu > ment(Unknown Source) > at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) > at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source) > at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) > at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source) > at org.apache.commons.digester.Digester.parse(Digester.java:1543) > at org.apache.catalina.startup.Catalina.start(Catalina.java:449) > at org.apache.catalina.startup.Catalina.execute(Catalina.java:400) > at org.apache.catalina.startup.Catalina.process(Catalina.java:180) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccess > orImpl.java:39) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMeth > odAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:324) > at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:203) > Catalina.start: java.lang.ClassNotFoundException: > org.apache.catalina.core.StandardServer > java.lang.ClassNotFoundException: > org.apache.catalina.core.StandardServer > at > org.apache.commons.digester.Digester.createSAXException(Digest > er.java:2383) > at > org.apache.commons.digester.Digester.createSAXException(Digest > er.java:2409) > at > org.apache.commons.digester.Digester.startElement(Digester.java:1271) > at > org.apache.xerces.parsers.AbstractSAXParser.startElement(Unkno > wn Source) > at > org.apache.xerces.impl.dtd.XMLDTDValidator.startElement(Unknow > n Source) > at > org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanStar > tElement(Unknown Source) > at > org.apache.xerces.impl.XMLDocumentScannerImpl$ContentDispatche > r.scanRootElementHook(Unknown Source) > at > org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$Fragment > ContentDispatcher.dispatch(Unknown Source) > at > org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocu > ment(Unknown Source) > at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) > at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source) > at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) > at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source) > at org.apache.commons.digester.Digester.parse(Digester.java:1543) > at org.apache.catalina.startup.Catalina.start(Catalina.java:449) > at org.apache.catalina.startup.Catalina.execute(Catalina.java:400) > at org.apache.catalina.startup.Catalina.process(Catalina.java:180) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccess > orImpl.java:39) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMeth > odAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:324) > at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:203) > >