You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by "Glanville, Jay" <Ja...@NaturalConvergence.com> on 2003/12/18 14:28:24 UTC

Problems running pre-compiled JSP classes when in subdirectories

I have pre-compiled my JSP classes using the JspC plugin from ant.  My
files compile without complaint.  However, when I try to access the
files through tomcat, I receive some NoClassDefFoundError exceptions.
But these exceptions only occur when I'm accessing JSPs in the
subdirectories off of the web root.

Here's my application's background.  I have two files:
  <WEBROOT>/index.jsp
  <WEBROOT>/dir/index.jsp
The contents of the two files are just simple HTML.  I precompiled the
JSP using the JspC ant target, then compiled using javac.  Finally, I
created a context pointing the work directory to the location of my java
and class files.  When I tried to access the first file
(http://localhost/context/index.jsp) everything went fine.  However,
when I tried to access the second file
(http://localhost/context/dir/index.jsp), I received the
NoClassDefFoundError.  The log file looks like this:

2003-12-15 20:11:25 StandardWrapperValve[jsp]: Servlet.service() for
servlet jsp threw exception
javax.servlet.ServletException: org/apache/jsp/index_jsp (wrong name:
org/apache/jsp/dir/index_jsp)
	at
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:249)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
        [deleted ...]
----- Root Cause -----
java.lang.NoClassDefFoundError: org/apache/jsp/index_jsp (wrong name:
org/apache/jsp/dir/index_jsp)
	at java.lang.ClassLoader.defineClass0(Native Method)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:537)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:448)
	at
org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:215)
        [deleted]

Now, according to my research on this mailing list, the most frequent
reason for a NoClassDef error is capitalization.  However, this isn't
the case in my situation as the two package names are completely
different: org/apache/jsp/index_jsp vs. org/apache/jsp/dir/index_jsp.

I'm using Tomcat 4.1.29.

Any suggestions on how to alleviate this situation would be greatly
appreciated.

Thanks

JDG

PS: I should also point out that I have tried the recommended way of
precompiling my JSP by converting to servlets
(http://jakarta.apache.org/tomcat/tomcat-4.1-doc/jasper-howto.html#Web%2
0Application%20Compilation).  However, I have a problem with this
method: it makes it that much harder to patch my application.  With the
non-servlet approach, I just simply deliver the modified JSP files.
With the servlet approach, I need to deliver the classes, plus ensure
that the web.xml is correct (add new entries, remove old ones, modify
where needed), plus restart the context.




--
Jay Glanville

---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-user-help@jakarta.apache.org