webentwicklung-frage-antwort-db.com.de

Die Sun JSTL-Taglib-Deklaration schlägt mit "Tag-Bibliotheksdeskriptor nicht gefunden" fehl.

Ich verwende eine JSP-Seite, um ein Array von Werten zu drucken. Ich versuche dafür JSTL <c:forEach> Zu verwenden.

<c:forEach items="${objects}" var="object">
    <td>${object.name} </td>
</c:forEach>

Das Problem ist meine JSTL-Taglib-Deklaration:

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

Die IDE zeigt einen Fehler in dieser Zeile

Der Tag-Bibliotheksdeskriptor wurde nicht gefunden.

Viele Foren verweisen auf die alte Sun-Site, um die JSTL-Bibliotheken herunterzuladen. Jetzt verweisen alle diese Links auf die Oracle-Homepage ohne Link zu JSTL-Binärdateien. Dies lässt mich glauben, dass es einen neueren Ansatz gibt, um dies zu erreichen.

65
Atma

So beheben Sie dieses Problem:

  1. Das jstl jar Sollte sich in Ihrem Klassenpfad befinden. Wenn Sie maven verwenden, fügen Sie in Ihrem pom.xml Eine Abhängigkeit zu jstl hinzu, indem Sie den bereitgestellten Code verwenden hier . Wenn Sie nicht maven verwenden, laden Sie die JSTL-JAR von hier herunter und stellen Sie sie in Ihrem WEB-INF/lib Bereit.

  2. Stellen Sie sicher, dass die folgende taglib-Direktive oben in Ihrem jsp steht:

     <%@ taglib prefix="c" uri="http://Java.Sun.com/jsp/jstl/core"%>
    
92

Überprüfen Sie einfach unsere eigene JSTL-Wiki-Seite für die richtigen Download-Links und kristallklare Installationsanweisungen.

Bewegen Sie die Maus über das [jstl] Markieren Sie die Frage, die Sie selbst gestellt haben, bis ein schwarzes Kästchen angezeigt wird, und klicken Sie dort auf den Link info .

enter image description here

Scrollen Sie dann ein wenig nach unten zu den Informationen zu den JSTL-Versionen, bis Sie den Download-Link zu JSTL 1.2 (oder 1.2.1) finden.

enter image description here

Schließlich legen Sie einfach genau diese Datei in Webapps /WEB-INF/lib.

enter image description here

Auf diese Weise darf die taglib-Deklaration keine Fehler mehr enthalten und die JSTL-Tags und -Funktionen sollten einfach funktionieren.

35
BalusC

Ich möchte nur meine Erfahrungen teilen. Ich habe das gleiche Problem über JSTL mit Maven. Ich habe es gelöst, indem ich zwei Abhängigkeiten hinzugefügt habe.

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5</version>
    </dependency>
    <dependency>
        <groupId>jstl</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>
4
THIHA SOE

Wenn Sie einen Tomcat-Server verwenden, empfehle ich, die JSTL-JAR-Datei in den Tomcat-lib-Ordner zu kopieren. Auf diese Weise haben Sie in all Ihren Webprojekten automatisch Zugriff auf JSTL (mit Taglib-Deklaration in .jsp-Dateien natürlich).

2
pivopil

Sie können die Apache Standard Taglib herunterladen und die JAR in Ihr Projekt einbinden.

Dies ist ein Fix für Leute, die Maven nicht benutzen. Sie müssen auch standard.jar Zu Ihrem lib-Ordner hinzufügen, damit die Kern-Tag-Bibliothek funktioniert. Funktioniert für JSTL-Version 1.1.

<%@taglib prefix="core" uri="http://Java.Sun.com/jsp/jstl/core"%>
1
user2339071

Ich bekam das gleiche Problem aufenter image description here Spring Tool Suite 3.2 und änderten die Version von jstl manuell auf 1.2 (von 1.1.2), wenn sie zur Abhängigkeitsliste hinzugefügt wurden, und der Fehler verschwand.

0
davidqwk

Dieses Problem trat bei einem Maven-Projekt auf, das die Eclipse-IDE verwendete. Ich habe die Reihenfolge und den Export im Erstellungspfad des Projekts geändert, wobei die Maven-Abhängigkeiten an erster Stelle standen und der Fehler verschwunden ist. Ich vermute, es liegt daran, dass die Eclipse IDE) ursprünglich meine Anwendungsquelle erstellt hat, bevor die Maven-Bibliotheken geladen wurden.

0
Aris Capellos