Eclipse “não pode encontrar o descritor de biblioteca de tags” para marcas personalizadas (não JSTL!)

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

Pergunta

Eu tenho um projeto Java EE que muito bem construção com Ant, implanta perfeitamente ao JBoss, e corre sem qualquer problema. Este projecto inclui alguns Personalizado bibliotecas de tags (que não é JSTL !), Que também são trabalhar sem quaisquer dificuldades.

O problema é com o Eclipse IDE (Ganimedes): em cada arquivo JSP que utiliza nossas marcas personalizadas, as bandeiras do analisador JSP as taglib incluem linha com com este erro:

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

Isso também faz com que cada uso da biblioteca guia para ser sinalizado como um erro, e desde que o IDE não tem sua definição, não pode verificar parâmetros de tags, etc.

Os nossos arquivos JSP perfeitamente de trabalho são um mar de erros vermelhos, e meus olhos estão começando a queimar.

Como posso simplesmente dizer Eclipse, "O descritor de biblioteca de marcas que você está procurando é "src / web / WEB-INF / (exemplo) -taglib / (exemplo) .tld"?

Eu já fiz esta pergunta sobre os fóruns de suporte do Eclipse, sem resultados votos.

Foi útil?

Solução 4

Acontece que a causa era que este projeto não estava sendo considerado pelo Eclipse para ser realmente um projeto Java EE em tudo; era um projeto antigo, de 3,1, e o Eclipse 3.5 que estamos usando agora requer vários "naturezas", a ser definido no arquivo de configuração do projeto.

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

Eu era capaz de encontrar a causa, criando um novo "Dynamic Web Project", que ler corretamente seus arquivos JSP, e comparar com a config do projeto antigo.

A única maneira que eu poderia encontrar para adicionar estes estava editando o arquivo .project, mas depois de re-abrir o projeto, tudo magicamente funcionou. As configurações referenciados por pribeiro, acima, não eram necessários uma vez que o projeto já conformado com as configurações padrão.

Ambos pribeiro e respostas de nitind me deu ideias para iniciar minha busca, obrigado.

Existe uma maneira de editar estes "naturezas" de dentro da interface do usuário?

Outras dicas

Em Eclipse Helios "Java EE Module Dependências" nas propriedades do projeto foi substituído por "Assembleia implantação".

Assim, para resolver este problema com o Eclipse Helios, a maneira que eu fiz, é o seguinte:

  • Botão direito do mouse sobre o projeto no Package Explorer e escolha "Importar ..."
  • Aceite a seleção padrão "File System" e pressione "Next"
  • Pressione o botão "Browse" na linha De diretório, ir para a instalação do tomcat e localize o webapps arquivo / examples / WEB-INF / lib (eu tenho tomcat 6, outras versões do Tomcat podem ter os webapps caminho / jsp-exemplos / WEB-INF / lib). Uma vez na imprensa caminho OK.
  • Clique além jstl.jar e standard.jar para ativar as caixas de seleção
  • Na linha Into folder, clique em Procurar e selecione a pasta da biblioteca. Eu uso / lib dentro do projeto.
  • Clique em "Finish"
  • clique direito sobre o projeto no Package Explorer e escolha Propriedades (ou pressione Alt + Enter)
  • Clique em "Java Build Path"
  • Clique em "Adicionar Jar", clique em seu projeto, lib pasta, selecione jstl.jar, pressione OK
  • Clique em "Adicionar Jar", clique em seu projeto, lib pasta, selecione standard.jar, pressione OK
  • Pressione OK para fechar as propriedades de diálogo
  • Clique na visualização Problemas e selecione a mensagem "entrada de classpath ... / jstl.jar não serão exportados ou publicados. ClassNotFoundExceptions de tempo de execução pode resultar.".
  • Botão direito do mouse sobre ele e selecione "Quick Fix".
  • Aceite o padrão "Mark a entrada classpath matéria associada como publicar / exportação dependência" e pressione Terminar.
  • Faça o mesmo para standard.jar

Isto resolve o problema, mas se você quiser verificar o que aconteceu na "Assembléia implantação", abra as propriedades do projeto novamente, selecione "Assembléia implantação" e você verá que standard.jar e jstl.jar foram adicionadas para WEB-INF / lib.

Este foi o meu problema e como eu fixo isso ...

Eu tinha feito tudo o que todos tinham mencionado acima, etc, mas ainda estava recebendo este erro. Acontece que eu estava usando o URI de http://java.sun.com/jsp/jstl/fmt e http://java.sun.com/jsp/jstl/core que estão incorretos.

Tente mudar as uris de cima para:

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

Além disso, certifique-se que os frascos corretos referenciados no caminho de classe.

Eu tive o mesmo problema com um listras TagLib mostrando uri como não foi encontrado. Eu estava usando Índigo e Maven e quando eu verifiquei Propriedades-> Java Build Path-> Order & Export Tab eu encontrei (em um check-out projeto fresco) que a caixa de seleção "Maven Dependências" foi desmarcada por algum motivo. Basta verificar que a caixa e fazendo um Maven instalação limpa cancelou todos os erros.

Eu me pergunto por Eclipse não assume Eu quero meu Maven Dependências no caminho de construção ...

correu para o mesmo problema, eu estou com o Maven para que eu adicionou isto à pom no meu projeto 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>

Esta corrigiu o problema e eu usei "fornecido" escopo porque como o OP, tudo já estava trabalhando em JBoss.

Aqui é onde eu encontrei a solução: http://alfredjava.wordpress.com/2008 / 12/22 / JSTL-connot resolvido /

Quando eu tentei incluem o Core biblioteca JSTL no meu JSP:

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

Eu tenho o seguinte erro no Eclipse (índigo):

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

Eu fui para o Project Properties -> Targeted Runtimes, e então verificado o servidor que eu estava usando (Geronimo 3.0). A maioria das pessoas estaria usando Tomcat. Isso resolveu o meu problema. Espero que ajude!

Eu fixo este problema hoje.

  • Altere o diretório de saída para o seu WEB-INF / pasta classes. (/ Java Build Path, pasta Projeto Propriedades / Default saída)
  • Assigne as dependências do módulo. (Projeto / Propriedades / Java EE Module Dependências) serão copiados para a pasta WEB-INF / lib onde Eclipse olhares para as definições tag lib também.

Espero que ajude.

Muita coisa depende de que tipo de projeto que é. apoio JSP do WTP quer espera que os arquivos JSP estar sob a mesma pasta que é o pai da pasta WEB-INF (src / web, que será então tratar como "/" para encontrar TLDs), ou para ter projeto de metadados definidas até ajudá-lo a saber onde essa raiz é (feito para você em um Dynamic web Project através de Assembléia de implantação). Como você está se referindo ao arquivo TLD, e onde está localizado o arquivo JSP?

E talvez eu perdi o post original para os fóruns Eclipse; o que eu vi foi publicado um dia inteiro após este.

Verifique as duas bibliotecas em F:\apache-tomcat-7.0.21\webapps\examples\WEB-INF\lib:

  1. jstl.jar
  2. standard.jar

Eu enfrentei mesmo problema. Isto é o que eu fiz para resolver o problema.

  1. Escolha um projeto e clique direito.
  2. Clique em Propriedades.
  3. Clique na aba bibliotecas.
  4. Clique em 'Adicionar Jars'.
  5. Adicionar jar relevante para seu erro.

Você pode simplesmente ir para Caminho de Construção -> Adicionar Bibliotecas e para o tipo de biblioteca para adicionar selecione "Server Runtime." Clique em Avançar e selecione um tempo de execução do servidor para adicionar ao classpath eo problema desaparece se jstl.jar e standard.jar estão em classpath do seu servidor.

Eu estou usando Spring STS plugin e um projeto de modelo webmvc Primavera. Eu tive que instalar o M2e Maven plugin do primeiro: http://www.eclipse.org/m2e/

E, em seguida, limpar o projeto. Sob Project -> Clean...

Se o seu TLD estão no classpath, normalmente sob o diretório WEB-INF, as duas dicas a seguir devem resolver o problema (independentemente de sua configuração do ambiente):

  1. Certifique-se de que o <uri> no TLD eo uri na diretiva taglib de suas páginas jsp corresponder. O elemento <uri> do TLD é um nome exclusivo para a biblioteca de tags.

  2. Se o TLD não tem um elemento <uri>, o Container tentará usar o atributo uri na diretiva taglib como um caminho para o TLD real. e.g. Eu poderia ter um arquivo TLD personalizado na minha pasta WEB-INF e usar o caminho para o este TLD como o valor uri no meu JSP. No entanto, esta é uma prática ruim e deve ser evitado, pois os caminhos, então, ser codificado.

Eu tive o mesmo problema com MyEclipse e Eclipse 6.6.0. Ele vermelho alinhou o valor uri em cada

<%@ taglib prefix="s" uri="/struts-tags"%>. Eu fixo-lo indo ao projeto / MyEclipse / Web / Tag Libraries "e definindo o padrão TLD Prefixo para Struts 1.2 Tiles Marcas para 's'. Eu também tive que fazer o mesmo em 'Configurar as definições de projetos / MyEclipse / Web / espaço de trabalho ... / Tag Libraries'.

Eu tive o mesmo problema com STS (suite fonte springtool).

De acordo com STS, clique direito sobre o projeto, que "Propriedades", "projeta facetas", do que à direita da janela, clique na guia "runtime", e verificar "VMware vFabric tc Servidor (...)" e clique em "Aplicar" e que deveria ser OK depois que a atualização da área de trabalho.

bem, você precisa entender que há sempre duas coisas a API ea implementação (mente o formato Gradle do código a seguir)

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'

Então, se você estiver usando um servlet container sem apoio jstl então é claro que não vai fornecer ambos, um erro que eu fiz é que eu só colocar o primeiro, mas se você estiver usando o aplicativo pilha completa servidor ou seja, GlassFish, em seguida, glassfish terá ambos já dentro.

Para mim, esse erro ocorre sempre que eu tento usar uma nova versão do eclipse. Aparentemente, o novo eclipse redefine a variável M2_REPO e eu recebo tudo o erro biblioteca de tags na exibição Marker (às vezes com erros de validação EJB).

Depois de atualizar variável M2_REPO para apontar para localização real do repositório Maven, leva 2-3 Projeto -.> Iterações limpo para obter tudo funcionando

E, às vezes, existem alguns erros de validação de xml (EJB) junto com este erros biblioteca tag. atualizar manualmente o arquivo XML correspondente, inicia uma pesquisa de arquivo .xsd * e as validações xml erros são resolvidos. Postar isso, os erros de biblioteca tag também desaparecer.

Por outro lado, se você estiver trabalhando apenas na fonte de java e estão recebendo esses erros de coisas que você não tocar em um grande projeto que está trabalhando, você pode simplesmente desligar as validações em Eclipse. As configurações estão sob Preferências-> Web-> JSP Arquivos-> Validação

Eu estava tendo o mesmo problema usando Tomcat 6.0 e Eclipse e eu tentei algo que o meu amigo sugeriu e ele trabalhou para mim. O link para a pergunta que fiz ea minha resposta comentou pode ser encontrada aqui:

JSTL Tomcat 6.0 não é possível encontrar o erro descritor taglib

Deixe-me saber se isso resolve o seu "Não é possível localizar o descritor taglibrary" problema.

Este erro pode surgir de várias fontes diferentes. Um caso (não mencionado em outras respostas a esta pergunta) ocorre quando Eclipse não implementar a versão do conjunto de especificação JSP no documento TLD. Eclipse lançamentos tipicamente ficar para trás até um ano na implementação mais recente servlet e especificações JSP. Consulte este bug Eclipse por exemplo.

Neste caso, seu aplicativo web pode correr bem na última versão do Tomcat, mas Eclipse ainda pode reclamar de um TLD faltando. A solução de curto prazo (curto de ignorar o erro no Eclipse) é bater para baixo a versão JSP ao que a sua versão do Eclipse apoios.

Além disso, mantenha em mente a versão TLD você está implementando. Os nomes de marcas mudaram ligeiramente de v1.1 para v2.0 (ou seja, info está agora description em taglib e não é um elemento válido sob tag, muitos dos nomes de elementos agora contêm um hífen). Eclipse tem nenhuma tolerância para nomes de tags TLD com erros ortográficos.

TLD 2.0 (jsp-versão 2.0) Referência

TLD 2.1 (jsp-versão 2.3) Referência

substituir jstl.jar para jstl1.2.jar resolvido o problema para tomcat 7.0

Eu também enfrentou o mesmo problema. Certifique-se de ter as mesmas versões do JSTL no Eclipse e no diretório de trabalho Tomcat, ou seja, em \webapps\examples\WEB-INF\lib e na pasta lib.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top