Description of problem: Exception is thrown when accessing JSP page with java.util.HashMap reference. This issue is related to JDK 8. HashMap implementation has changed and looks like jasper works with HashMap$Entry subclass which is not pressent in JDK 8 HashMap anymore. Version-Release number of selected component (if applicable): Java(TM) SE Runtime Environment (build 1.8.0-b132) EAP 6.3.0.DR5 How reproducible: Always Steps to Reproduce: 1. Use java.util.HashMap in JSP file or reference it with some import 2. Build project with JDK 8 3. Deploy on EAP 6.3.0.DR5 4. Access JSP page JSP example: (StatusReport.executedJobs is referenced HashMap) <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ page import="springtest.init.StatusReport,java.lang.Integer" %> <html> <head><title>Scheduled Job Report Page</title></head> <body> Number of milliseconds from application webcontainer deployment: <ul><li> <% out.println(StatusReport.getMillsFromStart()); %> </li></ul> <table border="1"> <thead> <tr><th>Job Name</th><th>Number of jobs executed</th></tr> </thead> <% for (String key : StatusReport.executedJobs.keySet()) { Integer value = (Integer)StatusReport.executedJobs.get(key); %> <tr> <td class="key" id="<%= key %>"> <%= key %> </td> <td class="value" id="<%= key %>-value"> <%= value %> </td> </tr> <% } %> </table> </body> </html> Status report class: package springtest.init; import java.util.HashMap; import java.util.Map; import java.util.Date; public class StatusReport { public static final Map<String, Integer> executedJobs = new HashMap<String, Integer>(); public static final Date startDate = new Date(); /** * This method os not thread safe. We assume that there will not be only more job * of the same name trying to update the count at the same time. * @param jobName */ public static void increaseJobCount(String jobName) { int cnt = 1; if (executedJobs.containsKey(jobName)) { cnt += executedJobs.get(jobName); } executedJobs.put(jobName, cnt); } public static long getMillsFromStart() { return new Date().getTime() - startDate.getTime(); } } Actual results: 15:12:22,893 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/quartz1-scheduling].[jsp]] (http-/127.0.0.1:8080-13) JBWEB000236: Servlet.service() for servlet jsp threw exception: org.apache.jasper.JasperException: JBWEB004062: Unable to compile class for JSP: JBWEB004061: An error occurred at line: 1 in the generated java file The type java.util.Map$Entry cannot be resolved. It is indirectly referenced from required .class files JBWEB004211: Stacktrace: at org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:85) [jbossweb-7.4.0.Beta4.jar:7.4.0.Beta4] at org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:69) [jbossweb-7.4.0.Beta4.jar:7.4.0.Beta4] at org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:451) [jbossweb-7.4.0.Beta4.jar:7.4.0.Beta4] at org.apache.jasper.compiler.Compiler.compile(Compiler.java:361) [jbossweb-7.4.0.Beta4.jar:7.4.0.Beta4] at org.apache.jasper.compiler.Compiler.compile(Compiler.java:339) [jbossweb-7.4.0.Beta4.jar:7.4.0.Beta4] at org.apache.jasper.compiler.Compiler.compile(Compiler.java:326) [jbossweb-7.4.0.Beta4.jar:7.4.0.Beta4] at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:606) [jbossweb-7.4.0.Beta4.jar:7.4.0.Beta4] at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:308) [jbossweb-7.4.0.Beta4.jar:7.4.0.Beta4] at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:309) [jbossweb-7.4.0.Beta4.jar:7.4.0.Beta4] at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:242) [jbossweb-7.4.0.Beta4.jar:7.4.0.Beta4] at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) [jboss-servlet-api_3.0_spec-1.0.2.Final-redhat-1.jar:1.0.2.Final-redhat-1] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:295) [jbossweb-7.4.0.Beta4.jar:7.4.0.Beta4] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) [jbossweb-7.4.0.Beta4.jar:7.4.0.Beta4] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:231) [jbossweb-7.4.0.Beta4.jar:7.4.0.Beta4] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:149) [jbossweb-7.4.0.Beta4.jar:7.4.0.Beta4] at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:169) [jboss-as-web-7.4.0.Final-redhat-5.jar:7.4.0.Final-redhat-5] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:145) [jbossweb-7.4.0.Beta4.jar:7.4.0.Beta4] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:97) [jbossweb-7.4.0.Beta4.jar:7.4.0.Beta4] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:102) [jbossweb-7.4.0.Beta4.jar:7.4.0.Beta4] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:340) [jbossweb-7.4.0.Beta4.jar:7.4.0.Beta4] at org.apache.coyote.http11.Http11NioProcessor.process(Http11NioProcessor.java:353) [jbossweb-7.4.0.Beta4.jar:7.4.0.Beta4] at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:911) [jbossweb-7.4.0.Beta4.jar:7.4.0.Beta4] at org.apache.tomcat.util.net.NioEndpoint$ChannelProcessor.run(NioEndpoint.java:920) [jbossweb-7.4.0.Beta4.jar:7.4.0.Beta4] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [rt.jar:1.8.0] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [rt.jar:1.8.0] at java.lang.Thread.run(Thread.java:744) [rt.jar:1.8.0]
Created attachment 878086 [details] project build
Workaround is to use latest ECJ module (ecj-4.3.1.jar) instead of ecj-3.7.2-redhat-1.jar.
Java 8 JSP compilation will need 4.4 to work well, so updating doesn't really make sense.
This issue reported against older version, cannot be reproduced against latest 6.3.0.ER10 bits, which means it was fixed earlier. Therefore, we are closing this bug. Thank you for reporting this issue.