No se puede comstackr la clase para JSP: el tipo java.util.Map $ Entry no se puede resolver. Se hace referencia indirectamente desde archivos .class requeridos

No puedo hacer que tomcat7 compile jsps. Hasta ejecutar los servlets de ejemplo muy bien y el servicio está en funcionamiento. Estoy ejecutando oracle java 8.

¿Alguien puede señalarme en la dirección correcta?

Aquí está la stacktrace:

type Exception report message Unable to compile class for JSP: description The server encountered an internal error that prevented it from fulfilling this request. exception org.apache.jasper.JasperException: Unable to compile class for JSP: 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 Stacktrace: org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:102) org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:331) org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:468) org.apache.jasper.compiler.Compiler.compile(Compiler.java:378) org.apache.jasper.compiler.Compiler.compile(Compiler.java:353) org.apache.jasper.compiler.Compiler.compile(Compiler.java:340) org.apache.jasper.JspComstacktionContext.compile(JspComstacktionContext.java:646) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:357) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334) javax.servlet.http.HttpServlet.service(HttpServlet.java:728) note The full stack trace of the root cause is available in the Apache Tomcat/7.0.35 logs. 

El código se ve así y es el código de muestra de tomcat7, así que supongo que es correcto.

    JSP 2.0 Examples - Hello World SimpleTag Handler   

JSP 2.0 Examples - Hello World SimpleTag Handler


This tag handler simply echos "Hello, World!" It's an example of a very basic SimpleTag handler with no body.


Result:

Debe usar una versión más reciente de tomcat que tenga soporte para JDK 8.

Puedo confirmar que apache-tomcat-7.0.35 NO tiene soporte para JDK8, también puedo confirmar que apache-tomcat-7.0.50 tiene soporte para JDK8.

El formato de clase de JDK8 ha cambiado y esa es la razón por la cual Tomcat no puede comstackr JSP. Intenta obtener una versión más nueva de Tomcat.

Recientemente tuve el mismo problema. Este es un error en Tomcat, o mejor dicho, JDK 8 tiene un formato de archivo de clase ligeramente diferente al que tenían las versiones anteriores de JDK8. Esto causa inconsistencia y Tomcat no puede comstackr JSP en JDK8.

Ver las siguientes referencias:

  • Comstackción de JSP con JDK 1.8 en Tomcat 8
  • comstackción tiene éxito en java7 pero falla en java8

Debido a que estamos ejecutando en Ubuntu 12.04 LTS y el último paquete soportado oficial de tomcat7 es 7.0.26, no podemos actualizar fácilmente todo el tomcat.

Para probar con el jdk8, pude resolver este problema cambiando algunos archivos en contra de su última versión 7.0. *.

Cambié jasper.jar, jasper-el y tomcat-util a la versión 7.0.53 y agregué ecj-4.3.1.jar. Eso vuelve a poner la aplicación en línea.

PERO … también cambié el contenido empaquetado con esto, así que tal vez sería mejor descargar todo el tomcat y usarlo instalado como paquetes defectuosos. Así que, por favor, vean esto solo como un quickhack muy sucio o una solución alternativa.

Si está utilizando maven, puede agregar el plugin tomcat7-maven a su pom.xml y se ejecutará correctamente. Este complemento ejecutará el proyecto en el contenedor de servlets Tomcat versión 7.0.47 que admite JDK 1.8.

    org.apache.tomcat.maven tomcat7-maven-plugin 2.2   ./src/main/webapp/META-INF/context.xml 8080     com.oracle ojdbc6 11.2.0.4.0     

Espero que esto sea útil! Gracias

De la base de conocimiento de JIRA :

 Symptoms 

Las acciones del flujo de trabajo pueden ser inaccesibles

  1. JIRA puede arrojar excepciones en la pantalla
  2. Una o ambas de las siguientes condiciones pueden existir:

Lo siguiente aparece en atlassian-jira.log:

  2007-12-06 10:55:05,327 http-8080-Processor20 ERROR [500ErrorPage] Exception caught in500 page Unable to compile class for JSP org.apache.jasper.JasperException: Unable to compile class for JSP at org.apache.jasper.JspComstacktionContext.compile(JspComstacktionContext.java:572) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:305) 

_

 Cause: 

El contenedor Tomcat almacena en caché los archivos .java y .class generados por el analizador JSP utilizados por la aplicación web. Algunas veces estos se corrompen o no se pueden encontrar. Esto puede ocurrir después de un parche o actualización que contiene modificaciones a los JSP.

 Resolution 

1. Borre los contenidos de la carpeta / work si usa JIRA o / work independientes si usa la instalación EAR / WAR. 2. Verifique que el usuario que ejecuta el proceso de la aplicación JIRA tenga permiso de lectura / escritura en el directorio / work. 3. Reinicie el contenedor de la aplicación JIRA para reconstruir los archivos.

Agregue esta importación <%@page import="java.util.Map" %>

Esto funcionó para mí, pero también necesitaba agregar <% @ page import = "java.util.HashMap"%>. Parece que la respuesta anterior es cierta, que si tienes el tomcat más nuevo es posible que no necesites agregar estas líneas, pero como no pude cambiar todo mi sistema, funcionó.
Gracias

Enfrenté exactamente el mismo problema al actualizar mi aplicación de java 6 a java 8 en tomcat 7.0.19. Después de actualizar el tomcat a 7.0.59, este problema se resuelve.

Intenta agregar <%@page import="java.util.Map.Entry"%> a tu archivo jsp

Hay muchas respuestas correctas / mismas, pero para futuras referencias:

Lo mismo significa Tomcat 7. Tenga en cuenta que la actualización solo de las versiones de sus frameworks usados ​​(como se propone en otras preguntas similares) no es suficiente.

También debe actualizar la versión del complemento Tomcat. Lo que funcionó para mí, con Java 7, fue la actualización a la versión 2.2 de tomcat7-maven-plugin (= Tomcat 7.0.47).

Recientemente me crucé con el mismo problema. Estaba usando IntelliJx64 con Tomcat7.0.32 con jdk.8.0.102 . No hubo problema entonces. Pude acceder directamente a mi implementación localhost: [puerto] sin agregar [mywebapp] o / ROOT .

Cuando traté de migrar a eclipse neón , me encontré con el mismo error que se discute cuando traté de establecer la ruta como una cadena vacía . Cuando implementé el entorno de ejecución para Java7 y configuré los módulos para que se vaciaran, no resolvió el problema. Sin embargo, cuando cambié mi instalación de tomcat a 7.072 y cambié manualmente la configuración de la ruta de contexto a path = “”, el problema se resolvió en eclipse. (Puede manipular la ruta a través de un doble clic en el servidor y cambiar a la pestaña del módulo también).

Mi pregunta es ¿por qué IntelliJ no estaba dando ningún problema con el mismo error que se suponía que estaba relacionado con la versión de instalación de Tomcat?

También parece haber una relación con el IDE en uso.

Me encontré con esto antes, como otros dijeron: simplemente upgrade jetty plugin

si estás usando maven

ir al plugin jetty en pom.xml y actualizarlo a

  org.eclipse.jetty jetty-maven-plugin 9.3.0.v20150612  3  ${jetty.port} 60000  foo ${jetty.stop.port}   

espero que esto te ayude