java - Mysterious Eclipse JSP Validation Errors
(16)
Agregar jsp-api.jar
a su classpath de compilación lo arreglaría. jsp-api.jar
está bajo common/lib
para tomcat 5.x
Eclipse (Helios) de vez en cuando marca que el contenido JSP con aspecto válido tiene errores. Parece que a menudo se rompe cuando uso la etiqueta <c: if>. Por ejemplo, en un JSP con solo este contenido:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<body>
<c:if test="${1 == 1}">
something
</c:if>
</body>
</html>
Los siguientes errores aparecen en la pestaña "Problemas" después de compilar:
- Tipos de operandos incompatibles String e int line 1
- javax.servlet.jsp.JspException no se puede resolver en una línea de tipo 1
- javax.servlet.jsp.PageContext no se puede resolver en una línea de tipo 1
El código funciona bien ¿La validación de las JSP tiene problemas, me falta algo obvio, o esto indica que algo no está configurado correctamente?
Bueno, encontré cómo resolver este error. Agregue esto a su dependencia Maven (pom.xml):
<!-- dependency to fix JSPServletException -->
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>jsp-api</artifactId>
<version>6.0.32</version>
<scope>provided</scope>
</dependency>
Comente si lo encuentra útil, tanto como me ayudó.
Como muchos de ustedes han mencionado, el problema está en la ruta de compilación y las bibliotecas que faltan. Encontré una solución muy simple para este problema de compilación. Aquí está la solución: en ''Java Build Path'' en eclipse, vaya a la pestaña ''Ordenar y exportar'' y asegúrese de que estén seleccionadas las bibliotecas ''Apache Tomcat v7.0'' (o cualquier versión de Tomcat que haya instalado con eclipse) . Esto soluciona el problema al instante. Sin problemas con nada más. :-)
No hay necesidad de desactivar ninguna validación en ese caso tampoco.
En base a los comentarios, terminé desactivando parte de la validación de JSP, que solucionó esto.
- Vaya a "Proyecto-> Propiedades-> Validación".
- Haga clic en "Configurar ajustes del espacio de trabajo ...".
- Desmarque las opciones para JSP Syntax Validator. Debe desmarcar tanto manual como de compilación
Esperaba que me estaba perdiendo algo y había una manera de solucionar esto, pero tengo que admitir que la validación de JSP es basura.
Esta es una vieja pregunta, pero pensé que podría mencionar que también la obtuve en Juno en Mac OS X, específicamente más seguido después de cambiar un archivo externamente y luego actualizar el proyecto en Eclipse. Subraya en todo tipo de lugares extraños, incluso a la mitad de las palabras en los comentarios de JSP.
¿Podría (¿probable ?!) estar relacionado con el error 376926 que aparentemente se arregló hace más de una semana.
Intenta verificar tu classpath del proyecto. Parece que no tiene la biblioteca JSP en su proyecto (de ahí que "JspException no se puede resolver"), o que su versión de biblioteca no es la misma que la versión del compilador JSP.
La biblioteca está incluida de manera predeterminada en el servidor de aplicaciones en el que implementa su aplicación, por lo que el código se ejecuta perfectamente cuando se implementa. Sin embargo, si al compilador interno de Eclipse le falta una biblioteca (o tiene una versión incorrecta), el editor de Eclipse muestra un error que no existe en el servidor de la aplicación.
La solución para las dependencias de eclipse que no se debe implementar es agregar el contenedor UserLibrary e incluirlo en proyectos dependientes.
- Crear dir eg / home / user * / eclipse-deps / y copiar jsp-api.jar de * / tomcat / lib dir
- En el Eclipse vaya a las propiedades del proyecto-> ruta de compilación, y cree una nueva "Biblioteca de usuario", por ejemplo. IdeDeps.
- Incluya / home / user / eclipse-deps / en la biblioteca IdeDeps e incluya la biblioteca de usuario en todos los proyectos que dependan de jsp-api.jar (en classpath: <classpathentry kind = "con" path = "org.eclipse.jdt". USER_LIBRARY / IdeDeps "/>)
Puedes hacer eso para todos los * .jars que no se deben desplegar, pero eclipse lo necesitan para fines de validación.
Necesita incluir jap-api.jar en su classpath.
Para Tomcat 7.0.x necesita lo siguiente en su pom
<properties>
<org.apache.tomcat.version>7.0.28</org.apache.tomcat.version>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jsp-api</artifactId>
<version>${org.apache.tomcat.version}</version>
<scope>provided</scope>
</dependency>
</dependencies>
Para arreglar:
- javax.servlet.jsp. * needs jsp-api.jar
- javax.servlet.http. * needs servlet-api.jar
Debe agregar estas bibliotecas a la ruta de creación de Java en la configuración del proyecto. Estas bibliotecas se pueden encontrar en el directorio tomcat / lib (para Tomcat 6.0).
Para mí, mientras escribía la línea manualmente, recibí un error hasta que cerré la etiqueta, pero el error nunca desapareció. Encontré una línea de código que era similar, y eliminé el código ofensivo, copié y pegué el código bueno, y luego hice los cambios dentro de la etiqueta según fuera necesario. ¡¡¡No más errores !!! No es una solución ideal, pero funcionó para mí.
También veo el mismo problema durante el cambio a Maven (con m2e), obtengo un error como "javax.servlet.http no se puede resolver" y algunas advertencias de Spring undefined warning. finalmente encuentro que es porque la versión de Java (v1.6) en mi configuración de compilación no es la misma que en la configuración de facetas (v1.7). después del cambio v1.7 a v1.6 el problema desaparece.
Tuve el mismo problema y eventualmente lo hice funcionar al cambiar (con Maven) a la versión 2.3 del servlet-api:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.3</version>
<scope>provided</scope>
</dependency>
Aparentemente 2.4 y posteriores ya no tienen javax.servlet.jsp. Es posible que pueda encontrar esa biblioteca en otro paquete si aún desea usar 2.4 o superior.
Tuve el mismo problema, el problema es la biblioteca jsp-api
, puede agregar la dependencia a su pom (como se explica en otras respuestas) o también puede agregar el tiempo de ejecución objetivo y eclipse agregará automáticamente esa biblioteca a su clase -camino:
Project -> Properties -> Targeted Runtimes
Y selecciona tu servidor.
Tuve el mismo problema, pero tanto jsp-api.jar como servlet-api.jar ya estaban en la ruta de compilación. La desactivación del Validador de sintaxis JSP tampoco ayudó.
En cambio, tuve que deshabilitar JSP Content Validator , dejando activado el validador de sintaxis. Todavía he subrayado el código en mi JSP pero no hay una cruz roja que indique el error de compilación y ese es el punto :)
Una forma mucho más fácil es
select the project -> Properties -> Java Build Path -> Libraries Tab
Seleccione add Libraries
. Desde allí seleccione Server Runtime
. Enumerará todos los tiempos de ejecución del servidor que haya configurado. Desde allí, seleccione el tiempo de ejecución del servidor con el que ha asignado su proyecto.
Esto reconstruirá y revalidará el proyecto y todos estos errores de fantasmas serán eliminados.
Espero que esto ayude.