Eclipse (Helios) marque de temps en temps le contenu JSP de recherche valide comme comportant des erreurs. Il semble que cela se produise souvent lorsque j'utilise la balise <c: if>. Par exemple, dans un JSP uniquement avec ce contenu:
<%@ taglib prefix="c" uri="http://Java.Sun.com/jsp/jstl/core" %>
<html>
<body>
<c:if test="${1 == 1}">
something
</c:if>
</body>
</html>
Les erreurs suivantes apparaissent dans l'onglet "Problèmes" après ma compilation:
Le code fonctionne bien. La validation des JSP pose-t-elle des problèmes, manque-t-il quelque chose d'évident ou indique-t-il que quelque chose n'est pas configuré correctement?.
Sur la base des commentaires, j'ai fini par désactiver une partie de la validation JSP, ce qui a résolu le problème.
J'espérais qu'il me manquait quelque chose et qu'il y avait un moyen de résoudre ce problème, mais je dois admettre que la validation JSP est indésirable.
Eh bien, j'ai trouvé comment résoudre cette erreur . Ajoutez ceci à votre dépendance 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>
Faites des commentaires si vous le trouvez utile, autant que cela m'a aidé.
J'ai eu le même problème, le problème est la bibliothèque jsp-api
, vous pouvez ajouter la dépendance à votre pom (comme expliqué dans d'autres réponses) ou vous pouvez également ajouter l'exécution target et Eclipse sera automatiquement ajoutez cette bibliothèque à votre chemin de classe:
Project -> Properties -> Targeted Runtimes
Et sélectionnez votre serveur.
Afin de réparer:
- javax.servlet.jsp. * nécessite jsp-api.jar
- javax.servlet.http. * a besoin de servlet-api.jar
Vous devez ajouter ces bibliothèques au chemin de génération Java dans la configuration du projet. Ces bibliothèques se trouvent dans le répertoire Tomcat/lib (pour Tomcat 6.0).
C’est une vieille question, mais je pense pouvoir mentionner que j’obtiens cela également dans Juno sous Mac OS X - en particulier le plus souvent après avoir modifié un fichier en externe puis actualisé le projet dans Eclipse. Souligne dans toutes sortes de lieux étranges, même à mi-chemin des mots dans les commentaires JSP.
Pourrait-il (probablement?!) Être lié au bug 376926 qui semble avoir été corrigé il y a un peu plus d'une semaine?
Pour Tomcat 7.0.x, vous avez besoin des éléments suivants dans votre 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>
La solution pour les dépendances Eclipse qui ne devrait pas être déployée consiste à ajouter le conteneur UserLibrary et à l'inclure dans les projets dépendants.
Vous pouvez le faire pour tous les * .jars qui ne doivent pas être déployés, mais Eclipse en a besoin à des fins de validation.
Un moyen beaucoup plus facile est de
select the project -> Properties -> Java Build Path -> Libraries Tab
Sélectionnez add Libraries
. De là, sélectionnez Server Runtime
. Il listera toutes les exécutions de serveur que vous avez configurées. À partir de là, sélectionnez le serveur d'exécution avec lequel vous avez associé votre projet.
Cela reconstruira et revalidera le projet et toutes ces erreurs fantômes seront supprimées.
J'espère que cela t'aides.
Essayez de vérifier le classpath de votre projet. Il semble que votre projet ne contienne pas la bibliothèque JSP (par conséquent, "l’exception JspException ne peut pas être résolue") ou que la version de votre bibliothèque n’est pas identique à celle du compilateur JSP.
La bibliothèque est incluse par défaut dans le serveur d'applications sur lequel vous déployez votre application. Le code s'exécute donc parfaitement lorsqu'il est déployé. Toutefois, s'il manque une bibliothèque au compilateur interne Eclipse (ou si sa version est incorrecte), l'éditeur Eclipse indique une erreur qui n'existe pas dans le serveur d'applications.
J'ai eu le même problème et je l'ai finalement fait fonctionner en passant (avec Maven) à la version 2.3 de servlet-api
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.3</version>
<scope>provided</scope>
</dependency>
Apparemment, les versions 2.4 et supérieures ne possèdent plus javax.servlet.jsp. Vous pourrez peut-être trouver cette bibliothèque dans un autre package si vous souhaitez toujours utiliser la version 2.4 ou supérieure.
Vous devez inclure jsp-api.jar dans votre chemin de classe.
J'ai eu le même problème, mais jsp-api.jar et servlet-api.jar étaient déjà dans le chemin de génération. La désactivation de JSP Syntax Validator n'a pas non plus aidé.
Au lieu de cela, j'ai dû désactiver JSP Content Validator , en laissant le validateur de syntaxe activé. J'ai toujours du code souligné dans mon JSP, mais pas de croix rouge indiquant une erreur de compilation et c'est ce qui compte.
Je vois aussi le même problème pendant que je passe à Maven (avec m2e), une erreur du type "javax.servlet.http ne peut pas être résolue" et certaines balises Spring averties. enfin, je trouve que c'est parce que la version Java (v1.6) de ma configuration de construction n'est pas identique à celle de la configuration des facettes (v1.7). après le changement de v1.7 à v1.6, le problème disparaît.
Comme nombre d'entre vous l'ont mentionné, le problème concerne le chemin de génération et les bibliothèques manquantes. J'ai trouvé un correctif très simple à ce problème de chemin de génération. Voici la solution: Sous "Chemin de construction Java" dans Eclipse, accédez à l'onglet "Commander et exporter" et assurez-vous que les bibliothèques "Apache Tomcat v7.0" (ou la version de Tomcat que vous avez installée avec Eclipse ) sont vérifiés. Cela résout instantanément le problème. Pas de soucis avec autre chose. :-)
Il n'est pas nécessaire de désactiver la validation dans ce cas non plus.
Ajouter jsp-api.jar
dans votre chemin de classe de construction le corrigerait. jsp-api.jar
est sous common\lib
pour Tomcat 5.x
Pour moi, alors que je tapais la ligne manuellement, j'ai eu une erreur jusqu'à ce que je ferme l'étiquette, mais l'erreur n'a jamais disparu. J'ai trouvé une ligne de code similaire, j'ai supprimé le code incriminé, copié et collé le code correct, puis apporté les modifications nécessaires dans la balise. Pas plus d'erreurs !!! Pas une solution idéale, mais cela a fonctionné pour moi.