My app used to work on Tomcat 4.0.1, but now I get a
java.lang.NoClassDefFoundError whenever the application tries to use one of
our custom tags: in particular, it's a tag that uses XSLT transformations.
The class that is not found is
javax.xml.transform.TransformerConfigurationException, which is located in
the xml-apis.jar file, located in our webapp's WEB-INF/lib directory. This
file came with Xalan.
I've attached a stack trace below. Notice that the error happens in
introspecting on the Tag bean. From this I infer that whatever class is
introspecting on the bean was loaded by a ClassLoader that does not have
visibility to classes loaded from the webapp's WEB-INF/lib directory. (Can
someone confirm this?)
Is this a bug or a feature? Can anyone confirm that my analysis above is
correct, or else explain where I've failed to analyze the situation
properly? Does anyone have any suggestions as to how I can fix this
problem?
Now, it's possible that I could work around this problem by moving
xerces.jar out of catalina's common/lib directory, as described by the
release notes (as a way of preventing Tomcat from providing an XML parser to
all webapps). But this would require everyone installing the app to modify
their tomcat installation, and I want our webapp to work with a vanilla
tomcat installation, out of the box.
---------------------------
Stack trace:
java.lang.NoClassDefFoundError:
javax/xml/transform/TransformerConfigurationException
at java.lang.Class.getMethods0(Native Method)
at java.lang.Class.getDeclaredMethods(Class.java:1039)
at java.beans.Introspector$1.run(Introspector.java:852)
at java.security.AccessController.doPrivileged(Native Method)
at
java.beans.Introspector.getPublicDeclaredMethods(Introspector.java:850)
at java.beans.Introspector.getTargetEventInfo(Introspector.java:556)
at java.beans.Introspector.getBeanInfo(Introspector.java:294)
at java.beans.Introspector.getBeanInfo(Introspector.java:81)
at
org.apache.jasper.compiler.TagCache.setTagHandlerClass(TagCache.java:116)
at
org.apache.jasper.compiler.TagBeginGenerator.init(TagBeginGenerator.java:146
)
at
org.apache.jasper.compiler.JspParseEventListener$GeneratorWrapper.init(JspPa
rseEventListener.java:822)
at
org.apache.jasper.compiler.JspParseEventListener.addGenerator(JspParseEventL
istener.java:151)
at
org.apache.jasper.compiler.JspParseEventListener.handleTagBegin(JspParseEven
tListener.java:1032)
at
org.apache.jasper.compiler.DelegatingListener.handleTagBegin(DelegatingListe
ner.java:217)
at
org.apache.jasper.compiler.DelegatingListener.handleTagBegin(DelegatingListe
ner.java:212)
at org.apache.jasper.compiler.Parser$Tag.accept(Parser.java:878)
at org.apache.jasper.compiler.Parser.parse(Parser.java:1145)
at org.apache.jasper.compiler.Parser.parse(Parser.java:1103)
at org.apache.jasper.compiler.Parser.parse(Parser.java:1099)
at
org.apache.jasper.compiler.ParserController.parse(ParserController.java:213)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:210)
at org.apache.jasper.servlet.JspServlet.loadJSP(JspServlet.java:552)
at
org.apache.jasper.servlet.JspServlet$JspServletWrapper.loadIfNecessary(JspSe
rvlet.java:177)
at
org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.ja
va:189)
at
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:382)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:474)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
--
+-------------------------------------------------------------------+
| Dave Makower <[EMAIL PROTECTED]> |
| http://www.davemak.com/ |
+-------------------------------------------------------------------+
--
To unsubscribe: <mailto:[EMAIL PROTECTED]>
For additional commands: <mailto:[EMAIL PROTECTED]>
Troubles with the list: <mailto:[EMAIL PROTECTED]>