You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by Christopher Schultz <ch...@christopherschultz.net> on 2011/01/21 23:28:08 UTC

Exception running precompiled JSP

-----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-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


Re: Exception running precompiled JSP

Posted by Christopher Schultz <ch...@christopherschultz.net>.
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Chuck,

On 1/21/2011 5:35 PM, Caldarale, Charles R wrote:
>> From: Christopher Schultz [mailto:chris@christopherschultz.net] 
>> Subject: Exception running precompiled JSP
> 
>> 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.
> 
> Just verifying: are you running with an unaltered conf/catalina.properties?

Yup: everything is out of the box except for <Connector> configuration
and the webapp itself.

- -chris
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAk069XMACgkQ9CaO5/Lv0PASJACdG5aNl+XaXiImbjqksWdGbiSe
c50An1K8vN2xa+Igk5ScDO2fzwQYZfCb
=ZghS
-----END PGP SIGNATURE-----

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


RE: Exception running precompiled JSP

Posted by "Caldarale, Charles R" <Ch...@unisys.com>.
> From: Christopher Schultz [mailto:chris@christopherschultz.net] 
> Subject: Exception running precompiled JSP

> 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.

Just verifying: are you running with an unaltered conf/catalina.properties?

 - Chuck


THIS COMMUNICATION MAY CONTAIN CONFIDENTIAL AND/OR OTHERWISE PROPRIETARY MATERIAL and is thus for use only by the intended recipient. If you received this in error, please contact the sender and delete the e-mail and its attachments from all computers.


Re: Exception running precompiled JSP

Posted by Christopher Schultz <ch...@christopherschultz.net>.
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Konstantin,

On 1/22/2011 9:23 AM, Konstantin Kolinko wrote:
> 2011/1/22 Christopher Schultz <ch...@christopherschultz.net>:
>>    <c:forEach var="num" items="{1,2,3,4}">
> 
> The above will produce four strings, "{1", "2", "3" and "4}". There is
> c:forTokens to explicitly iterate over a string.

I didn't really care what it did... I did notice that I get four
iterations through the loop, but that my <c:out> wasn't producing the
numbers... all I get is a literal "${num}".

I'll file a bug and attach my webapp.

> You are right, you should not copy it to webapp.

Thanks for the confirmation.

> I have not tried to reproduce/debug your case, but it looks like a bug to me.

Should be trivially reproducible given my webapp. I'll post back with a
BZ ref.

Thanks,
- -chris
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAk069fQACgkQ9CaO5/Lv0PCDEgCggyYIIiF1CN9+2jx6ugaYYhNV
GQ4An0TXUrtaCc35ejubDHgdgyJsUpGu
=j/LY
-----END PGP SIGNATURE-----

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


Re: Exception running precompiled JSP

Posted by Konstantin Kolinko <kn...@gmail.com>.
2011/1/22 Christopher Schultz <ch...@christopherschultz.net>:
>    <c:forEach var="num" items="{1,2,3,4}">

The above will produce four strings, "{1", "2", "3" and "4}". There is
c:forTokens to explicitly iterate over a string.

> 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.

You are right, you should not copy it to webapp.

I have not tried to reproduce/debug your case, but it looks like a bug to me.

Best regards,
Konstantin Kolinko

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