You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by bu...@apache.org on 2014/03/20 11:19:24 UTC

[Bug 54475] SMAP broken in Java 8 for JSP compile

https://issues.apache.org/bugzilla/show_bug.cgi?id=54475

Robbie Gibson <ro...@yahoo.co.uk> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |robbie_usenet@yahoo.co.uk

--- Comment #5 from Robbie Gibson <ro...@yahoo.co.uk> ---
Created attachment 31415
  --> https://issues.apache.org/bugzilla/attachment.cgi?id=31415&action=edit
Failing servlet

I downloaded JDK 1.8.0 (1.8.0-b132) and Ant 1.9.3.
I downloaded Tomcat 7.0.52 and set up web.xml as specified, then removed
ecj-4.3.1.jar and added tools.jar from the JDK and ant.jar, ant-launcher.jar
from the Ant distribution.

I am able to reproduce the failure with the attached servlet.

Note that compiling servlets using JDK 1.8.0 works fine as long as the servlet
files don't contain any lambdas, so removing the '.filter (s -> s.length () ==
5)' causes the servlet to be correctly served. Adding a lambda causes the Java
8 compiler to add an InvokeDynamic target to the constant pool and triggers the
SMAP failure.
http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html#jvms-4.4

The exact exception is:

java.io.IOException: unexpected tag: 18
    at
org.apache.jasper.compiler.SmapUtil$SDEInstaller.copyConstantPool(SmapUtil.java:431)
    at
org.apache.jasper.compiler.SmapUtil$SDEInstaller.addSDE(SmapUtil.java:248)
    at
org.apache.jasper.compiler.SmapUtil$SDEInstaller.<init>(SmapUtil.java:220)
    at
org.apache.jasper.compiler.SmapUtil$SDEInstaller.install(SmapUtil.java:199)
    at org.apache.jasper.compiler.SmapUtil.installSmap(SmapUtil.java:163)
    at
org.apache.jasper.compiler.AntCompiler.generateClass(AntCompiler.java:284)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:378)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:353)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:340)
    at
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:657)
    at
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:357)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
    at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
    at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
    at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
    at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
    at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    at
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
    at
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
    at
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:315)
    at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:744)

-- 
You are receiving this mail because:
You are the assignee for the bug.

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