Eclipse « ne peut pas trouver le descripteur de bibliothèque de balises » pour les balises personnalisées (non JSTL!)

StackOverflow https://stackoverflow.com/questions/1265309

Question

J'ai un projet Java EE qui construisent bien avec Ant, déploie parfaitement à JBoss, et fonctionne sans aucun problème. Ce projet comprend quelques personnalisés bibliothèques de balises (ce qui est JSTL !), Qui sont également travail sans aucune difficulté.

Le problème est avec l'IDE Eclipse (Ganymède): dans chaque fichier JSP qui utilise nos balises personnalisées, les drapeaux de l'analyseur JSP la taglib incluent la ligne avec cette erreur:

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

Cela provoque également chaque utilisation de la bibliothèque de tabulation pour être signalé comme une erreur, et que l'EDI ne pas leur définition, il ne peut pas vérifier les paramètres de balise, etc.

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

Comment puis-je dire simplement Eclipse, « Le descripteur de bibliothèque de balises que vous recherchez est "src / web / WEB-INF / (exemple) -taglib / (exemple) .tld"?

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

Était-ce utile?

La solution 4

Il se trouve que la cause était que ce projet n'a pas été examiné par Eclipse pour être en fait un projet Java EE à tous; il était un ancien projet de 3,1, et l'Eclipse 3.5, nous utilisons exige 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 « Dynamic Web Project », qui correctement lu ses fichiers JSP, et contre la config diffing du projet ancien.

La seule façon que je pouvais trouver d'ajouter ceux-ci était en éditant le fichier .project, mais après la réouverture du projet, tout a fonctionné par magie. Les paramètres référencés par pribeiro, ci-dessus, ne sont pas nécessaires puisque le projet était déjà conforme aux paramètres par défaut.

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

Est-il possible d'éditer ces « natures » à partir de l'interface utilisateur?

Autres conseils

Dans Eclipse Helios « Java EE » dans les dépendances du module les propriétés du projet a été remplacé par « Assemblée de déploiement ».

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

  • Faites un clic droit sur le projet dans l'explorateur de package et choisissez « Importer ... »
  • Acceptez la sélection par défaut "File System" et appuyez sur "Suivant"
  • Appuyez sur "Parcourir" dans la ligne répertoire, allez à votre installation de tomcat et recherchez le fichier webapps / examples / WEB-INF / lib (je tomcat 6, d'autres versions de Tomcat peut avoir le chemin webapps / jsp-exemples / WEB-INF / lib). Une fois dans le chemin puis appuyez sur OK.
  • Cliquez en plus jstl.jar et standard.jar pour activer les cases à cocher
  • Sur la ligne dans le dossier, cliquez sur Parcourir et sélectionnez le dossier de la bibliothèque. J'utilise / lib à l'intérieur du projet.
  • Cliquez sur "Terminer"
  • Faites un clic droit sur le projet en vue Package Explorer et choisissez Propriétés (ou appuyez sur Alt + Entrée)
  • Cliquez sur "chemin de génération Java"
  • Cliquez sur "Ajouter Jar", cliquez sur votre projet, le dossier lib, sélectionnez jstl.jar, appuyez sur OK
  • Cliquez sur "Ajouter Jar", cliquez sur votre projet, le dossier lib, sélectionnez standard.jar, appuyez sur OK
  • Appuyez sur OK pour fermer la boîte de dialogue Propriétés
  • Cliquez sur le point de vue des problèmes et sélectionnez le message « d'entrée Classpath ... / jstl.jar ne sera pas exportée ou publiée. Runtime ClassNotFoundExceptions peut entraîner. ».
  • Faites un clic droit dessus et sélectionnez "Quick Fix".
  • Acceptez la valeur par défaut « Marquer l'entrée de classpath brut associé en tant que publication / dépendance à l'exportation » et appuyez sur Terminer.
  • Faites la même chose pour standard.jar

Cela résout le problème, mais si vous voulez vérifier ce qui est arrivé à « Assemblée de déploiement », ouvrez les propriétés du projet, sélectionnez « Assemblée de déploiement » et vous verrez que standard.jar et jstl.jar ont été ajoutés dans le dossier WEB-INF / lib.

Ce fut mon problème et comment je l'ai fixé ...

Je l'avais fait tout ce que tout le monde avait mentionné ci-dessus, etc., mais était encore à obtenir cette erreur. Il se trouve que j'utilisais les années uri de http://java.sun.com/jsp/jstl/fmt et http://java.sun.com/jsp/jstl/core qui étaient incorrects.

Essayez de passer les uris de dessus:

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

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

J'ai eu le même problème avec des rayures taglib uri montrant que introuvables. J'utilisais Indigo et Maven et quand j'ai vérifié Propriétés-> Java Créer Path-> Order & Export Tab j'ai trouvé (sur une caisse fraîche du projet) que la case à cocher « dépendances Maven » était décochée pour une raison quelconque. Il suffit de vérifier cette boîte et de faire un nettoyage Maven install effacé toutes les erreurs.

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

rencontré le même problème, j'utilise maven donc j'ajouté à la 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>

Ce résolu le problème et moi « fourni » portée parce que, comme l'OP, tout travaillait déjà dans JBoss.

est ici où j'ai trouvé la solution: http://alfredjava.wordpress.com/2008 / 12/22 / / résolu jstl-connot-

Quand j'ai essayé d'inclure la JSTL Core Library dans mon JSP:

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

Je suis l'erreur suivante dans Eclipse (Indigo):

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

Je suis allé au Propriétés du projet -> runtimes ciblées, puis vérifié le serveur que j'utilisais (Geronimo 3.0). La plupart des gens utiliseront Tomcat. Cela a résolu mon problème. Hope it helps!

Je fixe ce problème aujourd'hui.

  • Changer votre répertoire de sortie dans votre dossier WEB-INF / classes. (Projet / Propriétés / Chemin de compilation Java, par défaut dossier de sortie)
  • Assigne les dépendances du module. (Projet / Propriétés / Java EE Module dépendances) ils seront copiés dans le dossier WEB-INF / lib où Eclipse cherche la balise définitions lib aussi.

J'espère que ça aide.

Beaucoup dépend de quel type de projet, il est. Le soutien JSP de WTP soit attend les fichiers JSP d'être dans le même dossier qui est le parent du dossier WEB-INF (src / web, qu'il sera ensuite traiter comme « / » pour trouver TLDs), ou des métadonnées de projet mis en place pour l'aider à savoir où cette racine est (pour vous faire dans un projet Web dynamique par l'Assemblée de déploiement). Comment faites-vous référence au fichier TLD, et où est le fichier JSP situé?

Et peut-être que je manqué le message original aux forums Eclipse; celui que j'ai vu a été publié une journée après celui-ci.

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

  1. jstl.jar
  2. standard.jar

je faisais face à un même problème. C'est ce que je l'ai fait pour résoudre le problème.

  1. Sélectionnez Projet et clic droit.
  2. Cliquez sur les propriétés.
  3. Cliquez sur l'onglet Bibliothèques.
  4. Cliquez sur "Ajouter des fichiers JAR.
  5. Ajoutez votre pot correspondant à l'erreur.

Vous pouvez simplement aller à construire le chemin -> Ajouter des bibliothèques et pour le type de bibliothèque pour ajouter sélectionnez « Server Runtime. » Cliquez sur Suivant et sélectionnez un moteur d'exécution de serveur pour ajouter au classpath et le problème disparaît si jstl.jar et standard.jar sont dans le classpath de votre serveur.

J'utilise le plugin Spring STS et un projet de modèle de webmvc Spring. Je devais d'abord installer le plugin M2e Maven: http://www.eclipse.org/m2e/

Et puis nettoyez le projet. Sous Project -> Clean...

Si votre tld de sont sur le chemin de classe, généralement dans le répertoire WEB-INF, les deux conseils suivants devraient résoudre le problème (quelle que soit la configuration de votre environnement):

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

  2. Si le tld ne dispose pas d'un élément de <uri>, le conteneur tente d'utiliser l'attribut uri dans la directive taglib comme un chemin vers le TLD réel. par exemple pour Je pourrais avoir un fichier tld personnalisé dans mon dossier WEB-INF et utiliser le chemin du tld ce que la valeur uri dans mon JSP. Cependant, cela est une mauvaise pratique et doit être évitée car les chemins seraient alors codés en dur.

J'ai eu le même problème avec MyEclipse et Eclipse 6.6.0. Il la valeur uri une ligne rouge dans tous les

<%@ taglib prefix="s" uri="/struts-tags"%>. Je l'ai fixé en allant à « Projet / MyEclipse / Web / Tag Bibliothèques » et le réglage du défaut TLD pour préfixe Struts 1.2 Tiles Balises pour l « ». Je devais aussi faire les mêmes sous «Projet / MyEclipse / Web / Configurer les paramètres de l'espace de travail ... / bibliothèques de balises.

J'ai eu le même problème avec STS (__gVirt_NP_NN_NNPS<__ Suite source springtool).

Dans le cadre STS, faites un clic droit sur le projet, que « Propriétés », « Projet Facettes », que sur le droit de la fenêtre, cliquez sur l'onglet « exécution » et vérifiez « VMware vFabric tc Server (...) » et cliquez sur « Appliquer » et il devrait être OK après l'actualisation de l'espace de travail.

Eh bien, vous devez comprendre qu'il ya toujours deux choses l'API et la mise en œuvre (l'esprit le format gradle du code ci-dessous)

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'

Si vous utilisez un conteneur de servlet sans support jstl puis bien sûr, il ne fournira pas les deux, une erreur que je fait est que je ne mets le premier, mais si vous utilisez l'application complète de la pile serveur GlassFish-à-dire alors GlassFish aura tous les deux déjà à l'intérieur.

Pour moi, cette erreur se produit chaque fois que je tente d'utiliser une nouvelle version d'Eclipse. Apparemment, la nouvelle éclipse remet à zéro la variable M2_REPO et je reçois toute l'erreur de bibliothèque de balises dans la vue Marker (parfois avec des erreurs de validation de ejb).

Après la mise à jour variable M2_REPO pour pointer vers l'emplacement de repository réelle, il prend 2-3 Projet -.> Itérations Clean pour obtenir tout ce travail

Et parfois, il y a des erreurs de validation xml (EJB) ainsi que cette erreur de la bibliothèque de balises. la mise à jour manuellement le fichier XML correspondant, lance un fichier * .xsd recherche et les erreurs xml sont validations résolus. Diffusez ce fait, les erreurs de la bibliothèque de balises disparaissent également.

Par contre, si vous ne travaillez que sur la source java et obtenez ces erreurs de choses 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-> JSP Files-> Validation

Je faisais 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 cela a fonctionné pour moi. Le lien pour la question que je posais et ma réponse commenta se trouve ici:

JSTL Tomcat 6.0 Vous ne trouvez pas le descripteur de taglib erreur

Laissez-moi savoir si cela résout votre problème « Vous ne trouvez pas le descripteur taglibrary ».

Cette erreur peut provenir de plusieurs sources différentes. Un cas (non mentionné dans d'autres réponses à cette question) se produit lorsque Eclipse ne met pas en œuvre la version de la spécification JSP définie dans le document TLD. Eclipse retard libère généralement derrière jusqu'à un an dans la mise en œuvre servlet plus récente et les spécifications JSP. Voir ce bug Eclipse par exemple.

Dans ce cas, votre application web peut fonctionner très bien dans la dernière version de Tomcat, mais Eclipse peut encore se plaindre d'un TLD manquant. La solution à court terme (à court d'ignorer l'erreur dans Eclipse) est de tomber vers le bas la version JSP à celle que votre version d'Eclipse prend en charge.

De plus, gardez à l'esprit la version TLD vous implémentez. Les noms de balises ont changé légèrement de V1.1 à V2.0 (à savoir info est description maintenant taglib et ne constitue pas un élément valide en vertu tag, la plupart des noms d'éléments contiennent désormais un trait d'union). Eclipse n'a aucune tolérance pour les noms d'étiquette TLD mal orthographiés.

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

TLD 2.1 (jsp version 2.3) Référence

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

J'ai aussi fait face au même problème. Assurez-vous d'avoir les mêmes versions de JSTL dans Eclipse et dans le répertoire de travail Tomcat, i.e. dans \webapps\examples\WEB-INF\lib et dans le dossier lib.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top