Eclipse "ne peut pas trouver le descripteur de bibliothèque d'étiquette" pour les étiquettes personnalisées (pas JSTL!)

j'ai un projet Java EE qui se construit bien avec Ant, se déploie parfaitement à JBoss, et fonctionne sans aucun problème. Ce projet inclut quelques personnalisées tag libraries (qui n'est pas JSTL !), qui fonctionnent également sans aucune difficulté.

le problème est avec L'IDE Eclipse (Ganymède): dans chaque fichier JSP qui utilise nos étiquettes personnalisées, L'analyseur JSP signale la ligne taglib include avec cette erreur:

Cannot find the tag library descriptor for (example).tld

Cela fait aussi que chaque utilisation de la bibliothèque de l'onglet est signalée comme une erreur, et puisque L'IDE n'a pas sa définition, il ne peut pas vérifier les paramètres de l'étiquette, etc.

nos fichiers JSP parfaitement fonctionnels sont une mer d'erreurs rouges, et mes yeux commencent à brûler.

Comment puis-je simplement dire Eclipse ," le descripteur de bibliothèque d'étiquette que vous recherchez est "src/web/WEB-INF/(exemple)-taglib/(exemple).tld"?

j'ai déjà posé cette question sur les forums de soutien Eclipse, sans résultats utiles.

60
demandé sur vallismortis 2009-08-12 14:05:59

22 réponses

dans Eclipse Helios" dépendances du Module Java EE "dans les propriétés du projet a été remplacé par"déploiement Assembly".

donc pour résoudre ce problème avec Eclipse Helios, la façon dont je l'ai fait est la suivante:

  • faites un clic droit sur le projet dans l'Explorateur de paquets et choisissez" Importer..."
  • accepter la sélection par défaut "File System" et appuyer sur" Next
  • Appuyez sur "Parcourir" dans le directory line, allez à votre installation tomcat et localisez le fichier webapps/examples/WEB-INF/lib (j'ai tomcat 6, d'autres versions de Tomcat peuvent avoir le chemin webapps/jsp-examples/WEB-INF / lib). Une fois dans le chemin, appuyez sur OK.
  • cliquez à côté de jstl.bocal et standard.jar pour activer les cases à cocher
  • sur la ligne dans le dossier cliquez sur Parcourir et choisissez le dossier de la bibliothèque. J'utilise /lib à l'intérieur du projet.
  • Cliquez Sur "Terminer "
  • cliquez avec le bouton droit de la souris sur le projet dans L'Explorateur de paquets et choisissez Propriétés (ou appuyez sur Alt + Enter)
  • cliquez sur "Java Build Path"
  • cliquez sur "Ajouter Jar", cliquez sur votre projet, dossier lib, sélectionnez jstl.jar, appuyez sur OK
  • cliquez sur "Ajouter Jar", cliquez sur votre projet, dossier lib, sélectionnez standard.jar, appuyez sur OK
  • appuyez sur OK pour annuler la boîte de dialogue Propriétés
  • cliquez sur la vue de problèmes et sélectionnez le message "Classpath .../ jstl.jar ne sera pas exporté ou publié. La Classenotfoundexceptions de Runtime peut en résulter.".
  • faites un clic droit dessus et sélectionnez"Quick Fix".
  • Accepter la valeur par défaut "Marque de l'associé raw classpath comme un publier/dépendance à l'exportation" et appuyez sur Terminer.
  • Faire de même pour la norme.jar

Cela résout le problème, mais si vous voulez vérifier ce qui a c'est arrivé dans "Deployment Assembly", Ouvrez à nouveau les propriétés du projet, sélectionnez "Deployment Assembly" et vous verrez que la norme.jar et jstl.jar ont été ajoutés au dossier WEB-INF/lib.

28
répondu stivlo 2011-01-20 08:39:51

C'était mon problème et comment je l'ai corrigé...

j'avais fait tout ce que tout le monde avait mentionné ci-dessus, etc. mais il a été toujours obtenir cette erreur. Il s'avère que j'utilisais les uri de http://java.sun.com/jsp/jstl/fmt et http://java.sun.com/jsp/jstl/core qui étaient incorrects.

essayez de changer l'uris d'en haut en:

http://java.sun.com/jstl/fmt
http://java.sun.com/jstl/core

aussi, assurez-vous que vous avez les bons pots référencés dans votre chemin de classe.

18
répondu Polaris878 2010-11-01 21:33:50

j'ai eu le même problème avec une rayure taglib uri montrant comme introuvable. J'utilisais Indigo et Maven et lorsque j'ai vérifié les propriétés->Java Build Path->order & Export Tab J'ai trouvé (sur une nouvelle fiche de projet) que la case "Maven Dependencies" n'était pas cochée pour une raison quelconque. En cochant simplement cette case et en faisant une installation Maven clean, vous effacez toutes les erreurs.

je me demande pourquoi Eclipse ne suppose pas que je veux mes dépendances Maven dans le chemin de construction...

12
répondu Philip Murphy 2011-11-23 10:57:34

il s'avère que la cause était que ce projet N'était pas considéré par Eclipse comme étant en fait un projet Java EE du tout; c'était un vieux projet de 3.1, et L'Eclipse 3.5 que nous utilisons nécessite maintenant plusieurs" natures " à définir dans le fichier de configuration du projet.

<natures>
    <nature>org.eclipse.jdt.core.javanature</nature>
    <nature>InCode.inCodeNature</nature>
    <nature>org.eclipse.dltk.javascript.core.nature</nature>
    <nature>net.sf.eclipsecs.core.CheckstyleNature</nature>
    <nature>org.eclipse.wst.jsdt.core.jsNature</nature>
    <nature>org.eclipse.wst.common.project.facet.core.nature</nature>
    <nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
    <nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
</natures>

j'ai pu trouver la cause en créant un nouveau" projet web dynamique " qui lisait correctement ses fichiers JSP, et en me basant sur la configuration de l'ancien projet.

la seule façon que j'ai pu trouver pour ajouter ceux-ci était en éditant le .dossier du projet, mais après la réouverture du projet, tout a fonctionné comme par magie. Les paramètres mentionnés par pribeiro, ci-dessus, n'étaient pas nécessaires puisque le projet était déjà conforme aux paramètres par défaut.

les réponses de pribeiro et nitind m'ont donné des idées pour lancer ma recherche, merci.

y a-t-il un moyen d'éditer ces "natures" à l'intérieur de L'UI?

10
répondu ryandenki 2013-05-14 06:57:21

a rencontré le même problème, j'utilise maven donc j'ai ajouté ceci au pom dans mon projet web:

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version> <!-- just used the latest version, make sure you use the one you need -->
    <scope>provided</scope>
</dependency>

cela a résolu le problème et j'ai utilisé" fourni " portée parce que comme L'OP, tout fonctionnait déjà dans JBoss.

voici où j'ai trouvé la solution: http://alfredjava.wordpress.com/2008/12/22/jstl-connot-resolved /

8
répondu Mark J Miller 2011-11-21 18:46:00

quand j'ai essayé d'inclure la bibliothèque de base JSTL dans mon JSP:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

J'ai eu L'erreur suivante dans Eclipse (Indigo):

Can not find the tag library descriptor for "http://java.sun.com/jsp/jstl/core"

je suis allé aux propriétés du projet -> durées D'exécution ciblées, puis j'ai vérifié le serveur que j'utilisais (Geronimo 3.0). La plupart des gens utiliseraient Tomcat. Cela a résolu mon problème. Espérons que cela aide!

4
répondu Tanvir 2013-03-21 14:45:55

j'ai réglé ce problème aujourd'hui.

  • changez votre répertoire de sortie dans votre dossier WEB-INF/classes. (Projet/Propriétés/Java Build Path, dossier de sortie par Défaut)
  • assignez les dépendances du module. (Project / Properties/Java EE Module Dependencies) ils seront copiés dans le dossier WEB-INF/lib, où Eclipse recherche également les définitions des balises lib.

j'espère que cela aide.

3
répondu pribeiro 2009-09-25 15:08:05

tout dépend du type de projet. Le support JSP de WTP s'attend soit à ce que les fichiers JSP soient sous le même dossier que le parent du dossier WEB-INF (src/web, qu'il traitera alors comme "/" pour trouver les TLD), soit à ce que les métadonnées du projet soient configurées pour l'aider à savoir où se trouve la racine (fait pour vous dans un projet web dynamique par le biais de L'assemblage de déploiement). Comment vous référez-vous au fichier TLD, et où se trouve le fichier JSP?

et peut-être que j'ai manqué le message d'origine à l'Éclipse forums; je l'ai vu a été publié un jour après celui-ci.

3
répondu nitind 2014-04-21 21:42:31

vérifiez les deux bibliothèques dans F:\apache-tomcat-7.0.21\webapps\examples\WEB-INF\lib :

  1. jstl.jar
  2. standard.jar
2
répondu Buminda 2011-10-10 16:23:52

j'ai fait face au même problème. C'est ce que j'ai fait pour résoudre le problème.

  1. sélectionnez Projet et cliquez sur le bouton droit de la souris.
  2. Cliquez sur propriétés.
  3. Cliquez sur l'onglet bibliothèques.
  4. cliquez sur "Ajouter des pots".
  5. ajouter le bocal correspondant à votre erreur.
2
répondu Nirmal Mangal 2015-11-05 13:06:30

vous pouvez simplement aller à Build Path -> Add Libraries et pour le type de bibliothèque pour ajouter select" Server Runtime."Cliquez sur Suivant et sélectionnez un serveur d'exécution pour ajouter au classpath et le problème disparaît si jstl.bocal et standard.jar sont dans le chemin de classe de votre serveur.

1
répondu Patrick Garner 2011-11-11 05:24:51

j'utilise le plugin Spring STS et un projet de template Spring webmvc. J'ai dû installer le plugin M2E Maven en premier: http://www.eclipse.org/m2e /

et ensuite nettoyer le projet. Sous Project -> Clean...

1
répondu TalkLittle 2013-02-10 23:51:35

si vos tld sont sur classpath, typiquement sous le répertoire WEB-INF, les deux conseils suivants devraient résoudre le problème (indépendamment de votre environnement de configuration):

  1. " assurez-vous que le <uri> dans le TLD et l'uri dans la directive taglib de vos pages jsp correspondent. L'élément <uri> du tld est un nom unique pour la bibliothèque tag.

  2. si le DTL n'a pas <uri> , le conteneur tentera d'utiliser l'attribut uri dans la directive taglib comme un chemin vers le TLD réel. par exemple, je pourrais avoir un fichier TLD personnalisé dans mon dossier WEB-INF et utiliser le chemin d'accès à ce tld comme valeur uri dans mon JSP. Toutefois, il s'agit d'une mauvaise pratique qui doit être évitée car les chemins seraient alors codés de manière rigide.

1
répondu rabiya khan 2013-09-17 07:21:03

j'ai eu le même problème avec MyEclipse et Eclipse 6.6.0. Il a doublé de rouge la valeur de l'uri dans chaque

<%@ taglib prefix="s" uri="/struts-tags"%> . Je l'ai corrigé en allant dans 'Project/MyEclipse/Web/Tag Libraries' et en positionnant le préfixe TLD par défaut pour les balises Struts 1.2 Tiles à 's'. J'ai également dû faire la même chose sous 'Project/MyEclipse/Web/Configure workspace settings.../Tag Bibliothèques.

0
répondu user335669 2010-05-07 17:31:13

j'ai eu le même problème avec STS (springtool source suite).

sous STS, clic droit sur le projet, que "Propriétés", "facettes de projet", que sur la droite de la fenêtre cliquez sur l'onglet "runtime", et cochez "VMware vFabric tc Server (...) ", et cliquez sur "Appliquer" et ça devrait être OK après la mise à jour de l'espace de travail.

0
répondu Christos Loupassakis 2012-02-29 19:18:39

Eh bien, vous devez comprendre qu'il y a toujours deux choses L'API et la mise en œuvre (pensez au format Grad du code suivant)

compile group:'javax.servlet.jsp.jstl', name:'javax.servlet.jsp.jstl-api', version:'1.2.1'

compile group:'org.glassfish.web', name:'javax.servlet.jsp.jstl',version:'1.2.1'

donc, si vous utilisez un conteneur servlet sans support jstl, bien sûr, il ne fournira pas les deux, une erreur que j'ai faite est que je n'ai mis que le premier, mais si vous utilisez la pile complète application server I. e poisson de verre alors glassfish aura déjà les deux à l'intérieur.

0
répondu Ismail Marmoush 2014-01-29 05:39:19

Pour moi, cette erreur se produit chaque fois que j'essaie d'utiliser une nouvelle version d'eclipse. Apparemment, la nouvelle eclipse réinitialise la variable M2_REPO et j'obtiens toutes les erreurs de bibliothèque dans la vue Marker (parfois avec des erreurs de validation ejb).

après la mise à jour de la variable M2_REPO pour pointer vers l'emplacement réel du dépôt maven, il faut 2-3 itérations projet -> nettoyer pour que tout fonctionne.

et parfois, il y a du xml les erreurs de validation (ejb) ainsi que ces erreurs de bibliothèque de balises. Mise à jour manuelle du fichier XML correspondant, initie un *.la recherche de fichiers xsd et les erreurs de validation xml sont résolues. Postez ceci, les erreurs de bibliothèque de balises disparaissent aussi.

0
répondu Barun 2014-08-12 06:24:08

d'un autre côté, si vous ne travaillez que sur java source et que vous obtenez ces erreurs à partir de trucs que vous ne touchez pas dans un grand projet qui fonctionne, vous pouvez simplement désactiver les validations dans Eclipse. Les paramètres sont sous Préférences->Web->fichiers JSP - > Validation

0
répondu user3923794 2014-10-13 21:06:52

j'ai eu le même problème en utilisant Tomcat 6.0 et Eclipse et j'ai essayé quelque chose que mon ami a suggéré et ça a fonctionné pour moi. Le lien pour la question que j'ai posée et ma réponse commentée peut être trouvé ici:

JSTL Tomcat 6.0 Ne peut pas trouver le descripteur de taglib Erreur

faites-moi savoir si cela résout votre problème "ne trouve pas le descripteur taglibrary".

0
répondu somnathchakrabarti 2017-05-23 11:54:22

cette erreur peut provenir de plusieurs sources différentes. Un cas (non mentionné dans d'autres réponses à cette question) se produit lorsque Eclipse n'implémente pas la version de la spécification JSP définie dans le document TLD. Eclipse releases est généralement en retard d'un an dans la mise en œuvre des nouvelles spécifications servlet et JSP. Voir ce bug D'éclipse par exemple.

Dans ce cas, votre application web peut fonctionner correctement dans la dernière version de Tomcat, mais Eclipse peut encore se plaindre d'un TLD manquant. La solution à court terme (à moins d'ignorer L'erreur dans Eclipse) est de réduire la version JSP à celle que votre version D'Eclipse supporte.

gardez également à l'esprit la version TLD que vous mettez en œuvre. Les noms de balises ont été légèrement modifiés à partir de v1.1 à v2.0 (c'est à dire, info est maintenant description sur taglib et n'est pas un élément valide en vertu de l' tag , de nombreux noms d'éléments contiennent maintenant un tiret.) Eclipse n'a pas de tolérance pour les noms d'étiquettes TLD Mal orthographiés.

TLD 2.0 (jsp-version 2.0) référence

TLD 2.1 (JSP-version 2.3) référence

0
répondu vallismortis 2016-11-17 17:15:58

remplacer jstl.jar à jstl1.2.jar a résolu le problème pour tomcat 7.0

-1
répondu sathia 2015-10-18 14:06:04

j'ai également fait face au même problème. Assurez-vous que vous avez les mêmes versions de JSTL dans Eclipse et dans le répertoire de travail Tomcat, I. e dans le dossier \webapps\examples\WEB-INF\lib et dans le dossier lib .

-4
répondu user3445788 2014-03-27 12:58:53