Eclipse für benutzerdefinierte Tags „kann nicht den Tag-Bibliotheksdeskriptor finden“ (nicht JSTL!)

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

Frage

Ich habe ein Java-EE-Projekt, das mit Ant Fein bauen, die perfekt auf JBoss einsetzt und läuft ohne Probleme. Dieses Projekt umfasst ein paar benutzerdefinierte Tag-Bibliotheken (die nicht JSTL !), Die auch arbeiten ohne Schwierigkeiten.

Das Problem ist mit der Eclipse IDE (Ganymede): in jeder einzelnen JSP-Datei, die unsere benutzerdefinierten Tags verwendet, die JSP-Parser markiert die taglib umfassen Linie mit mit diesem Fehler:

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

Dies bewirkt, dass auch jede Verwendung der Registerkarte Bibliothek als Fehler markiert werden, und da die IDE nicht ihre Definition haben, kann es nicht Tag-Parameter überprüfen, etc.

Unsere perfekt arbeit JSP-Dateien sind ein Meer von roten Fehlern, und meine Augen zu brennen beginnen.

Wie kann ich einfach Eclipse-sagen: „Der Tag Bibliotheksdeskriptor Sie suchen, ist "src / web / WEB-INF / (Beispiel) -taglib / (Beispiel) .tld"?

Ich habe schon gefragt, diese Frage auf den Eclipse-Support-Foren, ohne hilfreiche Ergebnisse.

War es hilfreich?

Lösung 4

Es stellt sich heraus, dass die Ursache war, dass dieses Projekt nicht von Eclipse-tatsächlich betrachtet wird überhaupt ein Java-EE-Projekt zu sein; es war ein altes Projekt von 3,1, und die Eclipse 3.5 wir erfordert verwenden nun mehr „Naturen“, um in der Projektkonfigurationsdatei festgelegt werden.

<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>

Ich war in der Lage, die Ursache zu finden, indem Sie ein neues „Dynamic Web Project“ zu schaffen, die ordnungsgemäß ihre JSP-Dateien lesen und diffing gegen die Konfiguration des älteren Projektes.

Die einzige Möglichkeit, die ich finden konnte diese durch die Bearbeitung der Datei .project, aber nach dem erneuten Öffnen des Projektes hinzuzufügen war alles funktionierte magisch. Die Einstellungen von pribeiro verwiesen, oben, waren nicht notwendig, da das Projekt bereits auf die Standardeinstellung angepasst.

Sowohl pribeiro und nitind die Antworten gab mir Ideen meiner Suche nach kurbeln, danke.

Gibt es eine Möglichkeit, diese „Wesen“ der Bearbeitung innerhalb der UI?

Andere Tipps

in Eclipse Helios "Java EE-Modul Abhängigkeiten" in den Projekteigenschaften wurde mit "Deployment Assembly" ersetzt.

Also für dieses Problem mit Eclipse Helios zu lösen, wie ich es tat, ist das folgende:

  • Rechtsklick auf das Projekt im Paket-Explorer und wählen Sie "Import ..."
  • Akzeptieren Sie die Standardauswahl "File System" und drücken Sie auf "Weiter"
  • Klicken Sie auf "Durchsuchen" in der Von-Verzeichnis Zeile in Tomcat Installation und suchen Sie die Datei webapps / Beispiele / WEB-INF / lib (Ich habe tomcat 6, andere Versionen von Tomcat den Pfad kann webapps / jsp-examples / WEB-INF / lib). Einmal auf dem Weg drücken Sie OK.
  • Klicken Sie neben jstl.jar und standard.jar die Kontrollkästchen
  • aktivieren
  • Auf der Linie in den Ordner, klicken Sie auf Durchsuchen und die Bibliothek Ordner auswählen. Ich benutze / lib innerhalb des Projekts.
  • Klicken Sie auf "Fertig stellen"
  • Rechtsklick auf das Projekt in Paket-Explorer und wählen Sie Eigenschaften (oder drücken Sie Alt + Enter)
  • Klicken Sie auf "Java Build Path"
  • Klicken Sie auf "Hinzufügen Jar", klicken Sie auf Ihrem Projekt, einen Ordner lib, wählen jstl.jar, drücken Sie OK
  • Klicken Sie auf "Hinzufügen Jar", klicken Sie auf Ihrem Projekt, einen Ordner lib, wählen standard.jar, drücken Sie OK
  • Drücken Sie OK, um die Eigenschaften-Dialog
  • abzutun
  • Klicken Sie auf die Probleme Ansicht und wählen Sie die Meldung „Classpath Eintrag ... / jstl.jar werden nicht exportiert oder veröffentlicht werden. Runtime ClassNotFoundExceptions führen.“.
  • Recht darauf klicken und wählen Sie "Quick Fix".
  • Akzeptieren Sie den Standard „Markieren Sie die zugehörigen raw Classpath Eintrag als Publish / Exportabhängigkeit“ und drücken Sie auf Fertig stellen.
  • Machen Sie dasselbe für standard.jar

Das löst das Problem, aber wenn Sie überprüfen möchten, was in „Deployment Assembly“ geschehen ist, öffnen Sie die Projekteigenschaften wieder, wählen Sie „Deployment Assembly“ und Sie werden feststellen, dass standard.jar sehen und jstl.jar hinzugefügt wurden WEB-INF / lib Ordner.

Das war mein Problem und wie ich es feste ...

Ich hatte alles getan, was jeder hatte oben usw. erwähnt wurde aber noch diesen Fehler. Es stellte sich heraus, dass ich die URIs von http://java.sun.com/jsp/jstl/fmt und http://java.sun.com/jsp/jstl/core verwendet, die falsch waren.

Versuchen Sie, die URIs von oben auf Schalt:

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

Also, stellen Sie sicher, dass Sie die richtigen Gläser in Ihrem Classpath verwiesen haben.

Ich hatte das gleiche Problem mit einem Streifen TagLib uri nicht gefunden zeigt. Ich war mit Indigo und Maven und als ich eincheckte Eigenschaften-> Java Build-Weg-> Order & Export Tab fand ich (auf einer frischen Projekt Kasse), dass die „Maven Abhängigkeiten“ Checkbox aus irgendeinem Grunde nicht aktiviert waren. Einfach, dass das Feld überprüft und ein Maven sauber alle Fehler gelöscht Installation zu tun.

Ich frage mich, warum Eclipse-nicht gehe ich davon meine Maven Abhängigkeiten in dem Build-Pfad will ...

Ran in das gleiche Problem, ich verwende Maven so dass ich dies auf die pom in meinem Web-Projekt hinzugefügt:

<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>

Das das Problem behoben und ich „zur Verfügung gestellt“ scope denn wie die OP, alles bereits in JBoss arbeitet.

Hier ist, wo ich die Lösung gefunden: http://alfredjava.wordpress.com/2008 / 12/22 / jstl-connot aufgelöste /

Als ich versuchte, die JSTL Core Library in meinem JSP enthalten:

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

Ich habe die folgenden Fehler in Eclipse (Indigo):

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

ging ich in die Projekteigenschaften -> Gezielte Runtimes und überprüft dann den Server ich war mit (Geronimo 3.0). Die meisten Menschen Tomcat verwenden würde. Dies löste mein Problem. Hoffe, es hilft!

Ich reparierte dieses Problem heute.

  • ändern Sie Ihr Ausgabeverzeichnis auf Ihre WEB-INF / classes Ordner. (Projekt / Eigenschaften / Java Build Path, Standard-Ausgabe-Verzeichnis)
  • Assigne die Modulabhängigkeiten. (Projekt / Eigenschaften / Java EE-Modul Abhängigkeiten) werden sie auf das WEB-INF / lib-Verzeichnis kopiert werden, in die Eclipse-auch für den Tag lib Definitionen aussieht.

Ich hoffe, es hilft.

Viel hängt davon ab, welche Art von Projekt es sich handelt. WTP des JSP-Unterstützung entweder erwartet, dass die JSP-Dateien unter dem gleichen Ordner sein, dass die Eltern des WEB-INF-Ordners sind (src / web, die es dann als „/“ finden TLDs behandeln) oder Projektmetadaten haben, eingerichtet helfen, sie wissen, wo das root (für Sie in einem dynamischen Web-Projekt durch Deployment Assembly getan). Wie sind Sie auf die TLD-Datei und wo die JSP-Datei?

Und vielleicht habe ich den Original-Beitrag zu den Eclipse-Foren; Ich denjenigen sah, war einen ganzen Tag nach diesem veröffentlicht.

Überprüfen Sie die beiden Bibliotheken in F:\apache-tomcat-7.0.21\webapps\examples\WEB-INF\lib:

  1. jstl.jar
  2. standard.jar

ich konfrontiert gleiche Problem. Dies ist, was ich tat, um das Problem zu lösen.

  1. Wählen Sie Projekt und klicken Sie rechts.
  2. Klicken Sie auf Eigenschaften.
  3. Klicken Sie auf Registerkarte Bibliotheken.
  4. Klicken Sie auf 'Add Jars'.
  5. Fügen Sie relevante jar für Ihre Fehler.

Sie können einfach gehen Pfad zu bauen -> Add Bibliotheken und für die Bibliothek Typ select hinzufügen „Server Runtime.“ Klicken Sie auf Weiter und wählen Sie eine Server-Laufzeit zu dem Classpath hinzufügen und das Problem verschwindet, wenn jstl.jar und standard.jar Ihren Server Classpath ist.

Ich bin mit Frühlings-STS-Plugin und eine Feder webmvc Vorlagenprojekt. Ich musste das Maven M2e-Plugin installieren Sie zuerst: http://www.eclipse.org/m2e/

Und dann das Projekt reinigen. Unter Project -> Clean...

Wenn Ihr TLD auf dem Classpath ist, in der Regel unter dem WEB-INF-Verzeichnis, die beide folgenden Tipps sollten das Problem beheben (unabhängig von Ihrer Umgebung Setup):

  1. Stellen Sie sicher, dass der <uri> in der TLD und die uri in der taglib Richtlinie Ihrer jsp Seiten entsprechen. Das <uri> Element des TLD ist ein eindeutiger Name für die Tag-Bibliothek.

  2. Wenn die TLD keinen <uri> Element haben, versucht der Container das uri-Attribut in der taglib Richtlinie als Weg zum eigentlichen TLD zu verwenden. für z.B. Ich konnte eine benutzerdefinierte TLD-Datei in meinen WEB-INF-Ordnern hat und den Pfad zu dem diesem TLD als uri Wert in meinem JSP verwenden. Dies ist jedoch eine schlechte Praxis und sollte, da die Wege dann fest einprogrammiert werden würde vermieden werden.

Ich hatte das gleiche Problem mit MyEclipse und Eclipse 6.6.0. Es ist rot die uri-Wert in jeder ausgekleidet

<%@ taglib prefix="s" uri="/struts-tags"%>. Ich reparierte es, indem Sie auf ‚Projekt / MyEclipse / Web / Tag-Bibliotheken‘ und die Einstellung der Standard TLD Präfix für Struts 1.2 Fliesen Tags ‚s‘. Ich hatte auch die gleichen unter 'Projekt / MyEclipse / Web / Configure Arbeitsplatz Einstellungen ... / Tag-Bibliotheken' zu tun.

Ich hatte das gleiche Problem mit STS (springtool Quelle suite).

Unter STS, klicken Sie rechts auf das Projekt als „Eigenschaften“, „Projekt Facets“, als auf der rechten Seite des Fensters klicken Sie auf den „Laufzeit“ Registerkarte und überprüfen Sie „VMware vFabric tc Server (...)“ und klicken sie auf „Übernehmen“ und es soll nach dem Arbeitsbereich refresh in Ordnung sein.

gut müssen Sie verstehen, gibt es immer zwei Dinge, die die API und die Implementierung (die gradle Format des folgenden Codes beachten)

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'

Wenn Sie also einen Servlet-Container ohne jstl Unterstützung verwenden dann natürlich wird es nicht beide von ihnen bieten, ein Fehler, die ich gemacht ist, dass ich nur die ersten setzen, aber wenn Sie mit voller Stapel Anwendung Server dh Glasfischen dann werden Glasfischen beide haben schon drin.

Für mich tritt dieser Fehler auf, wenn ich versuche, eine neue Version von Eclipse zu verwenden. Offenbar ist die neue Eclipse setzt die M2_REPO Variable und ich alle Tag-Bibliothek Fehler in der Marker Ansicht (manchmal mit ejb Validierungsfehler).

M2_REPO Variable Nach der Aktualisierung auf tatsächliche Maven-Repository Position zu zeigen, dauert es 2-3 Projekt -.> Sauber Iterationen bekommen alles funktioniert

Und manchmal gibt es einige XML-Validierungsfehler (ejb) zusammen mit diesem Tag-Bibliothek Fehler. Sie manuell die entsprechenden XML-Datei zu aktualisieren, initiiert eine * XSD-Datei-Suche und die XML-Validierungen Fehler behoben sind. Sende diese verschwinden die Tag-Bibliothek Fehler auch.

Auf der anderen Seite, wenn Sie nur auf Java-Quelle arbeiten und bekommen diese Fehler von Sachen, die man in einem großen Projekt nicht berühren, das funktioniert, können Sie einfach die Validierungen in Eclipse auszuschalten. Die Einstellungen sind unter Einstellungen-> web-> JSP Dateien-> Validierung

Ich habe das gleiche Problem mit Tomcat 6.0 und Eclipse und ich versuche, aus etwas, was mein Freund schlug vor, und es funktioniert für mich. Der Link für die Frage, die ich gefragt, und meine Antwort kommentiert finden Sie hier:

JSTL Tomcat 6.0 kann nicht taglib Descriptor Fehler finden

Lassen Sie mich wissen, ob dies Ihr löst Problem „die taglibrary Descriptor nicht gefunden“.

Dieser Fehler aus verschiedenen Quellen entstehen kann. Ein Fall (nicht in anderen Antworten auf diese Frage erwähnte) tritt auf, wenn Eclipse-nicht die Version der JSP-Spezifikation implementieren gesetzt im TLD-Dokument. Eclipse-Versionen normalerweise liegt hinter bis zu einem Jahr in neuere Servlet und JSP-Spezifikationen implementiert. Siehe dieser Eclipse-Bug zum Beispiel.

In diesem Fall Ihre Web-Anwendung kann in der aktuellen Version von Tomcat gut laufen, aber Eclipse-kann noch über eine fehlende TLD beklagen. Die kurzfristige Lösung (kurz die Fehler in Eclipse zu ignorieren) ist die JSP-Version auf die einer Beule nach unten, dass Ihre Version von Eclipse unterstützt.

Auch hält die TLD-Version implementieren im Auge behalten. Die Variablennamen haben, leicht von V1.1 V2.0 geändert (d.h. info nun description auf taglib und ist kein gültiges Element unter tag, jetzt viele der Elementnamen einen Bindestrich enthalten). Eclipse hat keine Toleranz für falsch geschriebenen TLD Tag-Namen.

TLD 2.0 (jsp-Version 2.0) Referenz

TLD 2.1 (jsp-Version 2.3) Referenz

jstl.jar ersetzen Sie das Problem behoben jstl1.2.jar für tomcat 7.0

Ich sah sich auch das gleiche Problem. Stellen Sie sicher, gleichen Versionen von JSTL in Eclipse und im Tomcat-Arbeitsverzeichnis haben, das heißt in \webapps\examples\WEB-INF\lib und in lib Ordner.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top