2012-11-28 7 views
60

Sto utilizzando una pagina JSP per stampare una matrice di valori. Sto cercando di utilizzare JSTL <c:forEach> per questo.La dichiarazione taglib di Sun JSTL non riesce con "Impossibile trovare il descrittore della libreria di tag"

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

Il problema è la mia dichiarazione JSTL taglib:

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

L'IDE mostra un errore su questa linea

Non riesci a trovare il descrittore di libreria di tag.

Molti forum puntano al vecchio sito Sun per scaricare le librerie JSTL. Ora tutti questi collegamenti puntano alla home page di Oracle senza alcun collegamento ai binari JSTL. Questo mi porta a credere che ci sia un nuovo approccio per raggiungere questo obiettivo.

+0

Avete il 'jstl.jar' nel classpath? Verifica che il collegamento possa essere utile per http://stackoverflow.com/questions/5987908/how-to-resolve-can-not-find-the-tag-library-descriptor-for-http-java-sun-co – Usha

risposta

84

Per risolvere questo problema:

  1. Il jstl jar dovrebbe essere nel classpath. Se si utilizza maven, aggiungere una dipendenza a jstl nel proprio pom.xml utilizzando lo snippet fornito here. Se non si utilizza maven, scaricare il jar jstl da here e distribuirlo nel numero WEB-INF/lib.

  2. assicurarsi di avere la seguente direttiva taglib nella parte superiore del vostro jsp:

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

Il JSTL è stato spostato - utilizzare questo collegamento per la dipendenza: http://mvnrepository.com/artifact/javax.servlet.jsp.jstl/jstl/1.2 –

+1

Ora è http://mvnrepository.com/artifact/javax .servlet/jstl/1.2 – user2418306

34

Basta controllare il nostro JSTL wiki page per il corretto link di download e istruzioni per l'installazione d'acqua cristallina.

Metti il ​​mouse sopra il tag [jstl] che metti tu stesso la domanda fino a quando non viene visualizzata una casella nera e fai clic sul collegamento .

enter image description here

quindi scorrere un po 'verso il basso per le informazioni versioni JSTL fino a trovare il link di download per JSTL 1.2 (o 1.2.1).

enter image description here

Infine basta semplicemente inserire esattamente questo file nella webapp di /WEB-INF/lib.

enter image description here

In questo modo la dichiarazione taglib non deve dare errori più e la JSTL tags and functions dovrebbe funzionare.

+0

Inoltre, assicurati di avere 'jstl-1.2.jar' e non necessariamente' jstl-api-1.2.jar' – CodyBugstein

0

Stavo ricevendo questo problema con un progetto di maven che utilizza l'IDE di eclipse. Ho modificato "Ordine ed esportazione" nel percorso di costruzione del progetto mettendo prima le dipendenze Maven e l'errore è scomparso. Immagino sia perché l'IDE di eclipse stava inizialmente costruendo la mia sorgente di applicazioni prima di caricare le librerie di Maven.

0

Avevo lo stesso problema su enter image description here Spring Tool Suite 3.2 e ho modificato manualmente la versione di jstl in 1.2 (da 1.1.2) quando l'ho aggiunta all'elenco delle dipendenze e l'errore è scomparso.

1

Questa è una soluzione per le persone che non utilizzano Maven. È inoltre necessario aggiungere standard.jar alla cartella lib per far funzionare la libreria di tag principale. Funziona con la versione 1.1 di jstl.

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

Se si utilizza il server Tomcat, suggerisco di inserire il file .jar JSTL nella cartella di libreria Tomcat. In questo modo avrai un accesso a JSTL in tutti i tuoi progetti web automaticamente (con la dichiarazione taglib nei file .jsp ovviamente).

2

Voglio solo condividere la mia esperienza. Ho lo stesso problema con jstl usando Maven. L'ho risolto aggiungendo due dipendenze.

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