java - salida - la traza completa de la causa de este error se encuentra en los archivos de diario del servidor
No se puede compilar la clase para JSP: el tipo java.util.Map $ Entry no se puede resolver. Se hace referencia indirectamente desde archivos.class requeridos (11)
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.JspCompilationContext.compile(JspCompilationContext.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.
<%@ taglib prefix="mytag" uri="/WEB-INF/jsp2/jsp2-example-taglib.tld" %>
<html>
<head>
<title>JSP 2.0 Examples - Hello World SimpleTag Handler</title>
</head>
<body>
<h1>JSP 2.0 Examples - Hello World SimpleTag Handler</h1>
<hr>
<p>This tag handler simply echos "Hello, World!" It''s an example of
a very basic SimpleTag handler with no body.</p>
<br>
<b><u>Result:</u></b>
<mytag:helloWorld/>
</body>
</html>
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
De la base de conocimiento de JIRA :
Symptoms
Las acciones del flujo de trabajo pueden ser inaccesibles
- JIRA puede arrojar excepciones en la pantalla
- 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.JspCompilationContext.compile(JspCompilationContext.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.
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.
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.
El formato de clase de JDK8 ha cambiado y esa es la razón por la cual Tomcat no puede compilar 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 compilar JSP en JDK8.
Ver las siguientes referencias:
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
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
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>9.3.0.v20150612</version>
<configuration>
<scanIntervalSeconds>3</scanIntervalSeconds>
<httpConnector>
<port>${jetty.port}</port>
<idleTimeout>60000</idleTimeout>
</httpConnector>
<stopKey>foo</stopKey>
<stopPort>${jetty.stop.port}</stopPort>
</configuration>
</plugin>
espero que esto te ayude
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.
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.
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<!-- Include context file for Datasource configuration -->
<contextFile>./src/main/webapp/META-INF/context.xml</contextFile>
<port>8080</port>
</configuration>
<dependencies>
<!-- Include jdbc driver dependency if using datasource (in my case oracle) -->
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.4.0</version>
</dependency>
</dependencies>
</plugin>
</plugins>
Espero que esto sea útil! Gracias
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).