Eclipse “non riesce a trovare il tag library descrittore” per tag personalizzati (non JSTL!)

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

Domanda

Ho un progetto Java EE che costruiscono bene con Ant, distribuisce perfettamente a JBoss, e viene eseguito senza alcuna difficoltà. Questo progetto include alcune le librerie personalizzati tag (che non è JSTL !), Che sono anche lavorare senza alcuna difficoltà.

Il problema è con l'IDE Eclipse (Ganymede): in ogni singolo file JSP che utilizza i nostri tag personalizzati, il parser bandiere JSP la taglib includono linea con con questo errore:

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

Questo fa sì che anche ogni uso della biblioteca scheda per essere contrassegnato come un errore, e dal momento che l'IDE non ha la loro definizione, non può controllare i parametri di tag, ecc.

I nostri file JSP perfettamente di lavoro sono un mare di errori rossi, ei miei occhi stanno cominciando a bruciare.

Come posso semplicemente dire Eclipse, "Il descrittore di libreria di tag che stai cercando è "src / web / WEB-INF / (esempio) -taglib / (esempio) .tld"?

Ho già fatto questa domanda sul forum di supporto Eclipse, senza risultati utili.

È stato utile?

Soluzione 4

Si scopre che la causa era che questo progetto non era stato considerato da Eclipse per essere in realtà un progetto Java EE a tutti; era un vecchio progetto da 3,1, e l'Eclipse 3.5 che stiamo usando ora richiede diverse "nature" da impostare nel file di configurazione del progetto.

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

Sono stato in grado di trovare la causa con la creazione di un nuovo "progetto Web dinamico", che leggere correttamente i propri file JSP, e diffing contro la configurazione del progetto anziani.

L'unico modo che ho trovato per aggiungere questi è stato modificando il file .project, ma dopo la ri-apertura del progetto, tutto magicamente funzionato. Le impostazioni a cui fa riferimento pribeiro, in precedenza, non erano necessarie in quanto il progetto già conforme alle impostazioni di default.

Sia pribeiro e risposte di nitind mi hanno dato idee per avviare la mia ricerca, grazie.

C'è un modo di modifica di questi "nature" da dentro l'interfaccia utente?

Altri suggerimenti

In Eclipse Helios "Java EE modulo Dipendenze" nelle proprietà del progetto è stato sostituito con "Assemblea distribuzione".

Quindi, per risolvere questo problema con Eclipse Helios, il modo in cui l'ho fatto è la seguente:

  • Fare clic destro sul progetto in Package Explorer e scegliere "Importa ..."
  • Accetta la selezione predefinita "File System" e premere "Avanti"
  • Premere "Browse" nella riga Da directory, vai al tuo installazione di Tomcat e individuare il webapps di file / examples / WEB-INF / lib (ho Tomcat 6, altre versioni di Tomcat può avere il percorso webapps / jsp-examples / WEB-INF / lib). Una volta nel percorso di premere OK.
  • Fare clic oltre jstl.jar e standard.jar per attivare le caselle di controllo
  • Sulla linea nella cartella fare clic su Sfoglia e scegliere la cartella della libreria. Io uso / lib all'interno del progetto.
  • Fare clic su "Fine"
  • Fare clic destro sul progetto in vista Package Explorer e selezionare Proprietà (oppure premere Alt + Invio)
  • Fare clic su "Java Build Path"
  • Fai clic su "Aggiungi Jar", fai clic sul vostro progetto, la cartella lib, selezionare jstl.jar, premere OK
  • Fai clic su "Aggiungi Jar", fai clic sul vostro progetto, la cartella lib, selezionare standard.jar, premere OK
  • Premere OK per chiudere la finestra di dialogo Proprietà
  • Fare clic sulla vista Problemi e selezionare il messaggio "voce di Percorso di classe ... / jstl.jar non sarà esportato o pubblicato. ClassNotFoundExceptions Runtime possono derivare.".
  • Fare clic destro su di esso e selezionare "Quick Fix".
  • Accettare il valore predefinito "Selezionare la voce grezza percorso di classe associato come pubblicare dipendenza / export" e premere Fine.
  • Fare lo stesso per standard.jar

Questo risolve il problema, ma se si desidera controllare ciò che è successo in "Assemblea distribuzione", aprire di nuovo le proprietà del progetto, selezionare "Assemblea distribuzione" e vedrete che standard.jar e jstl.jar sono stati aggiunti nella cartella WEB-INF / lib.

Questo è stato il mio problema e come ho riparato ...

avevo fatto tutto tutti avevano accennato in precedenza, ecc, ma era ancora ottenere questo errore. Risulta Stavo usando le URI di http://java.sun.com/jsp/jstl/fmt e http://java.sun.com/jsp/jstl/core che erano errati.

Provare a cambiare le URI dall'alto a:

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

Inoltre, assicurarsi di avere i vasi corretti riferimento nel percorso di classe.

Ho avuto lo stesso problema con uno strisce taglib uri che mostrano come non trovato. Stavo usando Indigo e Maven e quando ho controllato Properties-> Java Costruire Path-> Order & Export Tab ho trovato (su un checkout nuovo progetto), che la casella di controllo "Maven Dipendenze" è stato incontrollato, per qualche motivo. Semplicemente controllando quella scatola e facendo un Maven installazione pulita eliminato tutti gli errori.

Mi chiedo perché Eclipse non si assume Voglio che i miei dipendenze Maven nel percorso di generazione ...

incontrato lo stesso problema, sto usando Maven così ho aggiunto questo al pom nel mio progetto 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>

Questo risolto il problema e che ho usato "a condizione" scope perché come il PO, tutto era già lavorando in JBoss.

Ecco dove ho trovato la soluzione: http://alfredjava.wordpress.com/2008 / 12/22 / JSTL-connot risolto /

Quando ho cercato di includere il Core Biblioteca JSTL nel mio JSP:

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

ho ottenuto il seguente errore in Eclipse (Indigo):

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

Sono andato alla proprietà del progetto -> Runtime mirati, e poi controllato il server ero usando (Geronimo 3.0). La maggior parte delle persone sarebbe utilizzando Tomcat. Ciò ha risolto il mio problema. Speranza che aiuta!

ho risolto questo problema di oggi.

  • Cambia la directory di output nella cartella / classi WEB-INF. (, Cartella Progetto / Proprietà / Java Build Path predefinito output)
  • Assigne le dipendenze dei moduli. (Progetto / Proprietà / Java EE modulo dipendenze) che saranno copiati nella cartella WEB-INF / lib dove Eclipse cerca il tag definizioni lib troppo.

Spero che aiuta.

Molto dipende da che tipo di progetto si tratta. supporto JSP di WTP sia aspetta che i file JSP di essere nella stessa cartella che è la principale della cartella WEB-INF (src / web, che sarà poi trattare come "/" per trovare TLD), o di avere i metadati del progetto impostato in modo da aiutarla a sapere dove che root è (fatto per voi in un progetto Web dinamico attraverso l'Assemblea Deployment). Come ti riferisci al file TLD, e dove si trova il file JSP?

E forse ho perso il post originale al forum di Eclipse; quello che ho visto è stato postato un giorno intero dopo questo.

Controlla le due librerie in F:\apache-tomcat-7.0.21\webapps\examples\WEB-INF\lib:

  1. jstl.jar
  2. standard.jar

Ho affrontato lo stesso problema. Questo è quello che ho fatto per risolvere il problema.

  1. Selezionare Progetto e fare clic destro.
  2. Fare clic su Proprietà.
  3. Fare clic su scheda librerie.
  4. Clicca su 'Aggiungi Vasi'.
  5. Aggiungi vaso rilevanti per il vostro errore.

Si può semplicemente andare a costruire il percorso -> Aggiungi biblioteche e per il tipo di libreria per aggiungere selezionare "Server Runtime". Fare clic su Avanti e selezionare un tempo di esecuzione di server da aggiungere al classpath e il problema va via se jstl.jar e standard.jar sono nel classpath del server.

Sto usando primavera STS plug-in e un modello di progetto Primavera webmvc. Ho dovuto installare il plugin Maven M2E prima: http://www.eclipse.org/m2e/

E poi pulire il progetto. Sotto Project -> Clean...

Se il vostro TLD sono sul percorso di classe, di solito nella directory WEB-INF, i seguenti due punte dovrebbe risolvere il problema (a prescindere dal vostro setup dell'ambiente):

  1. Assicurarsi che il <uri> nel TLD e l'URI nella direttiva taglib delle tue pagine JSP corrispondono. L'elemento <uri> del tld è un nome univoco per la libreria di tag.

  2. Se il tld non dispone di un elemento <uri>, il contenitore tenterà di utilizzare l'attributo uri nella direttiva taglib come un percorso per il dominio di primo livello attuale. per esempio Potrei avere un file TLD personalizzato nella mia cartella WEB-INF e utilizzare il percorso del tld questo come valore uri nel mio JSP. Tuttavia, si tratta di una cattiva pratica e dovrebbe essere evitata dal momento che le strade si sarebbero poi hardcoded.

Ho avuto lo stesso problema con MyEclipse ed Eclipse 6.6.0. E 'rosso allineato il valore uri in ogni

<%@ taglib prefix="s" uri="/struts-tags"%>. Ho riparato andando a 'biblioteche / MyEclipse / Web / Tag Project' e l'impostazione del dominio di primo livello prefisso predefinito per Struts 1.2 Tiles Tag a 's'. Ho anche dovuto fare le stesse sotto '/ MyEclipse / Web / Configurare le impostazioni di lavoro di progetto ... / Librerie di tag'.

Ho avuto lo stesso problema con la STS (suite fonte springtool).

In STS, fare clic destro sul progetto, di "Proprietà", "Progetto sfaccettature", che sulla destra della finestra fare clic sulla scheda "runtime", e verificare "VMware vFabric tc Server (...)" e fare clic su "Applica" e dovrebbe essere OK dopo l'aggiornamento di lavoro.

bene è necessario capire ci sono sempre due cose l'API e l'implementazione (mente il formato Gradle del seguente codice)

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'

Quindi, se stai usando un servlet container senza supporto JSTL poi, naturalmente, non fornirà entrambi, un errore che ho fatto è che ho messo solo il primo, ma se si sta utilizzando l'applicazione stack completo Server cioè GlassFish GlassFish allora avrà entrambi già dentro.

Per quanto mi riguarda, questo errore si verifica ogni volta che provo ad usare una nuova versione di Eclipse. A quanto pare, la nuova eclissi reimposta la variabile M2_REPO e ottengo tutto l'errore libreria di tag nella visualizzazione Marker (a volte con errori di convalida EJB).

Dopo aver aggiornato variabile M2_REPO per puntare alla reale posizione repository Maven, ci vogliono 2-3 Progetto -.> Iterazioni Pulire per ottenere tutto ciò di lavoro

E a volte, ci sono alcuni errori di convalida XML (EJB) insieme a questo errori libreria di tag. aggiornare manualmente il file XML corrispondente, avvia una ricerca * file XSD e le convalide XML errori vengono risolti. Pubblica questo, gli errori libreria di tag anche svaniscono.

D'altra parte, se si sta solo lavorando sorgente Java e stanno ottenendo questi errori da cose che non si tocca in un grande progetto che sta lavorando, si può semplicemente spegnere le convalide in Eclipse. Le impostazioni sono sotto Preferenze> Web-> JSP file-> Convalida

ho avuto lo stesso problema con Tomcat 6.0 ed Eclipse e ho cercato qualcosa che il mio amico ha suggerito e ha funzionato per me. Il link per la domanda che ho chiesto e la mia risposta ha commentato può essere trovato qui:

JSTL Tomcat 6.0 Non riesci a trovare l'errore descrittore taglib

Vorrei sapere se questo risolve il problema "Impossibile trovare il descrittore taglibrary".

Questo errore può derivare da fonti diverse. Un caso (non menzionato in altre risposte a questa domanda) si verifica quando Eclipse non implementa la versione della specifica JSP impostato nel documento TLD. Eclipse uscite tipicamente ritardo fino a un anno per l'attuazione più recente servlet e JSP specifiche. Vedere questo bug Eclipse per esempio.

In questo caso, l'applicazione web può funzionare bene nella sua ultima versione di Tomcat, ma Eclipse può comunque lamentarsi di un TLD mancante. La soluzione a breve termine (short di ignorare l'errore in Eclipse) è quello di sbattere giù la versione JSP a quello che la versione di Eclipse supporta.

Inoltre, tenere a mente la versione di dominio di primo livello si sta implementando. I nomi dei tag sono cambiate leggermente da v1.1 a v2.0 (vale a dire, info è ora description su taglib e non è un elemento valido sotto tag, molti dei nomi degli elementi oggi contengono un trattino). Eclipse non ha alcuna tolleranza per i nomi dei tag TLD errate.

TLD 2.0 (jsp-versione 2.0) di riferimento

TLD 2.1 (jsp-versione 2.3) Riferimento

sostituire jstl.jar al jstl1.2.jar risolto il problema per Tomcat 7.0

Ho anche affrontato lo stesso problema. Assicurarsi di avere le stesse versioni di JSTL in Eclipse e nella directory di lavoro di Tomcat, cioè in \webapps\examples\WEB-INF\lib e nella cartella lib.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top