-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

All,

I'm playing around with the JSP precompiler in TC 7 and I'm having
trouble running the compiled JSP.

The JSP itself is trivial:

<%@page pageEncoding="UTF-8" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"; %>

<html>
  <body>
    <h1>Example Pre-compiled JSP</h1>

    <ol>
    <c:forEach var="num" items="{1,2,3,4}">
      <li>Item #<c:out value="${num}" /></li>
    </c:forEach>
    </ol>
  </body>
</html>

It compiles without a problem. I have it packaged into a .jar file with
a META-INF/web-fragment.xml file that looks like this:

<?xml version="1.0" encoding="UTF-8"?>

<web-fragment xmlns="http://java.sun.com/xml/ns/javaee";
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-fragment_3_0.xsd";
version="3.0">
<!--
Automatically created by Apache Tomcat JspC 1/21/11 5:16 PM.
- -->

    <servlet>
        <servlet-name>org.apache.jsp.Test_jsp</servlet-name>
        <servlet-class>org.apache.jsp.Test_jsp</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>org.apache.jsp.Test_jsp</servlet-name>
        <url-pattern>/Test.jsp</url-pattern>
    </servlet-mapping>

</web-fragment>

When I invoke the JSP from my web browser, I get the runtime error whose
full stack trace is at the end of this post.

Basically, the error is this:

java.lang.NoClassDefFoundError: org/apache/jasper/runtime/JspSourceDependent

I checked, and that class can be found in CATALINA_BASE/lib/jasper.jar.

There are no instructions in
http://tomcat.apache.org/tomcat-7.0-doc/jasper-howto.html that suggest
that jasper.jar needs to be copied into the webapp's WEB-INF/lib
directory, and that seems dangerous anyway.

Is there something I'm missing? I'd appreciate any thoughts on why this
might not be working.

Thanks,
- -chris

The full stack trace:

javax.servlet.ServletException: Error instantiating servlet class
org.apache.jsp.Test_jsp
        
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
        
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:541)
        
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:380)
        
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:243)
        
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188)
        
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:166)
        
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:288)
        
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        java.lang.Thread.run(Thread.java:662)

root cause

java.lang.NoClassDefFoundError: org/apache/jasper/runtime/JspSourceDependent
        java.lang.ClassLoader.defineClass1(Native Method)
        java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
        java.lang.ClassLoader.defineClass(ClassLoader.java:616)
        java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
        
org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2775)
        
org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1115)
        
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1610)
        
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1488)
        
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
        
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:541)
        
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:380)
        
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:243)
        
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188)
        
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:166)
        
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:288)
        
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        java.lang.Thread.run(Thread.java:662)

root cause

java.lang.ClassNotFoundException:
org.apache.jasper.runtime.JspSourceDependent
        
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1643)
        
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1488)
        java.lang.ClassLoader.defineClass1(Native Method)
        java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
        java.lang.ClassLoader.defineClass(ClassLoader.java:616)
        java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
        
org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2775)
        
org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1115)
        
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1610)
        
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1488)
        
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
        
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:541)
        
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:380)
        
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:243)
        
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188)
        
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:166)
        
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:288)
        
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        java.lang.Thread.run(Thread.java:662)
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAk06CHgACgkQ9CaO5/Lv0PCyhQCgoVDBryW+xw22U9kF8T2NRrut
r78An0EwKiHyexKOjCooz9bEscTs2sCz
=YxXn
-----END PGP SIGNATURE-----

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to