Eclipse “no puede encontrar el descriptor de biblioteca de etiquetas” para etiquetas personalizadas (no JSTL!)

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

Pregunta

Tengo un proyecto Java EE que se basan bien con Ant, despliega perfectamente a JBoss, y funciona sin ningún problema. Este proyecto incluye un par de personalizados bibliotecas de etiquetas (que no es JSTL !), Que son también trabajando sin ninguna dificultad.

El problema es con el IDE Eclipse (Ganimedes): en cada archivo JSP que utiliza nuestras etiquetas personalizadas, las banderas del analizador JSP el taglib incluyen línea con este error:

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

Esto también hace que cada uso de la biblioteca ficha para ser marcado como un error, y ya que el IDE no tiene su definición, no puede comprobar los parámetros de variables, etc.

Nuestros archivos JSP perfectamente de trabajo son un mar de errores de color rojo, y mis ojos están empezando a arder.

¿Cómo puedo simplemente decirle a Eclipse, "El descriptor de la biblioteca que busca es "src / web / WEB-INF / (ejemplo) -taglib / (ejemplo) .tld"?

Ya he hecho esta pregunta en los foros de soporte de Eclipse, sin resultados útiles.

¿Fue útil?

Solución 4

Resulta que la causa fue que este proyecto no estaba siendo considerado por Eclipse ser en realidad un proyecto Java EE en absoluto; era un viejo proyecto desde el 3,1 y el 3,5 Eclipse estamos usando ahora requiere varios "naturalezas" que debían mantenerse en el archivo de configuración del proyecto.

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

yo era capaz de encontrar la causa mediante la creación de un nuevo "Dynamic Web Project", que leyó correctamente sus archivos JSP, y se diferencian contra la configuración del proyecto mayor.

La única manera de que pudiera encontrar para agregar éstos estaba editando el archivo .project, pero después de volver a abrir el proyecto, todo mágicamente trabajó. Los ajustes referenciados por pribeiro, anteriormente, no eran necesarias ya que el proyecto ya se ajustaba a los valores por defecto.

Tanto pribeiro y respuestas de nitind me dieron ideas para reactivar mi búsqueda, gracias.

¿Hay una manera de corregir estos "naturalezas" desde dentro de la interfaz de usuario?

Otros consejos

En Eclipse Helios "Java EE dependencias de módulos" en las propiedades del proyecto se ha sustituido por "Asamblea de despliegue".

Así que para resolver este problema con Eclipse Helios, la forma en que lo hice es la siguiente:

  • Haga clic derecho sobre el proyecto en el explorador de paquetes y elegir la opción "Importar ..."
  • Aceptar la selección predeterminada "Sistema de archivos" y pulse "Siguiente"
  • Pulse el botón "Examinar" en la línea A partir de directorio, vaya a la instalación de Tomcat y localizar el webapps de archivos / ejemplos / WEB-INF / lib (tengo Tomcat 6, otras versiones de Tomcat puede tener el camino webapps / jsp-examples / WEB-INF / lib). Una vez en el camino OK prensa.
  • Haga clic además jstl.jar y standard.jar para activar las casillas de verificación
  • En la línea de la carpeta, haga clic en Examinar y seleccione la carpeta de biblioteca. Yo uso / lib dentro del proyecto.
  • Haga clic en "Finalizar"
  • Haga clic derecho en el proyecto en vista de Package Explorer y seleccione Propiedades (o presione Alt + Enter)
  • Haga clic en "Java Build Path"
  • Haga clic en "Añadir Jar", haga clic en su proyecto, lib carpeta, seleccione jstl.jar, pulse OK
  • Haga clic en "Añadir Jar", haga clic en su proyecto, lib carpeta, seleccione standard.jar, pulse OK
  • Pulse Aceptar para cerrar el diálogo de propiedades
  • Haga clic en la vista Problemas y seleccione el mensaje "entrada de ruta de clases ... / jstl.jar no se exportará o publicado. ClassNotFoundExceptions tiempo de ejecución puede resultar.".
  • Haga clic derecho sobre él y seleccione "Quick Fix".
  • Acepte el valor predeterminado "marca la entrada de la ruta de clases sin formato asociado como una publicación de la dependencia / exportación" y pulse Finalizar.
  • Haga lo mismo para standard.jar

Esto resuelve el problema, pero si usted quiere comprobar lo que ha sucedido en la "Asamblea de despliegue", abra las propiedades del proyecto nuevo, seleccione "Asamblea de despliegue" y verá que standard.jar y jstl.jar se han añadido a WEB-INF / lib.

Esta era mi problema y cómo lo arreglé ...

Había hecho todo a todos había mencionado anteriormente, etc, pero todavía estaba recibiendo este error. Resulta que yo estaba usando el URI de http://java.sun.com/jsp/jstl/fmt y http://java.sun.com/jsp/jstl/core que eran incorrectos.

Trate de cambiar los URI desde arriba a:

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

Además, asegúrese de que tiene los frascos correctas que se hace referencia en su ruta de clase.

Yo tenía el mismo problema con un rayas taglib uri que muestran que no encontraron. Yo estaba usando Indigo y Maven y cuando me registré Properties-> Java Build Path-> Solicitar y Exportación Tab encontré (en un pago y envío del proyecto fresco) que la casilla de verificación "Maven Dependencias" era sin control por alguna razón. Basta con comprobar que la caja y hacer una instalación limpia Maven borra todos los errores.

Me pregunto por qué Eclipse no asume Quiero que mis dependencias de Maven en la trayectoria de la estructura ...

encontré con el mismo problema, estoy usando experta en lo que añade esto a la pom en mi proyecto 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>

Esto solucionó el problema y he usado "proporciona" alcance porque al igual que el PO, todo lo que ya estaba trabajando en JBoss.

Aquí es donde he encontrado la solución: http://alfredjava.wordpress.com/2008 / 12/22 / jstl-connot-resuelto /

Cuando traté de incluir la librería JSTL Core en mi JSP:

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

Tengo el siguiente error en Eclipse (Indigo):

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

Fui a las propiedades del proyecto -> Tiempos de ejecución dirigidas, y después se comprueba el servidor que estaba usando (Geronimo 3.0). La mayoría de la gente estaría utilizando Tomcat. Esto resolvió mi problema. Espero que ayude!

He arreglado este problema hoy en día.

  • Cambiar el directorio de salida a la carpeta / clases WEB-INF. (Propiedades / Java Build Path, carpeta de salida de Proyectos / defecto)
  • cedida las dependencias del módulo. (Proyecto / Propiedades / Java EE Módulo dependencias) que se copiará en la carpeta WEB-INF / lib donde Eclipse busca la etiqueta de definiciones lib también.

espero que ayude.

Mucho depende de qué tipo de proyecto que es. soporte de JSP de la DAP o bien espera los archivos JSP que será en la misma carpeta que es el padre de la carpeta WEB-INF (src / web, que luego va a tratar como "/" para encontrar TLD), o tener metadatos del proyecto establecido para ayudar a que sabe dónde está la raíz (hecho para usted en un proyecto web dinámico a través de la Asamblea de despliegue). ¿Cómo se está refiriendo al archivo TLD, y donde se encuentra el archivo JSP?

Y tal vez me perdí el post original a los foros de Eclipse; el que vi fue publicada un día después de éste.

Comprobar las dos bibliotecas en F:\apache-tomcat-7.0.21\webapps\examples\WEB-INF\lib:

  1. jstl.jar
  2. standard.jar

Me enfrenté mismo problema. Esto es lo que he hecho para resolver el problema.

  1. Seleccionar el proyecto y haga clic derecho.
  2. Haga clic en propiedades.
  3. Haga clic en la pestaña bibliotecas.
  4. Haga clic en 'Añadir tarros'.
  5. Añadir JAR pertinentes para su error.

Usted puede simplemente ir a Build Path -> Añadir bibliotecas y para el tipo de biblioteca para agregar seleccione "Servidor de tiempo de ejecución." Haga clic en Siguiente y seleccione un servidor de tiempo de ejecución para añadir a la ruta de clase y el problema desaparece si jstl.jar y standard.jar están en la ruta de clase del servidor.

Estoy usando STS Spring plugin y un proyecto de plantilla webmvc primavera. He tenido que instalar el plugin de Maven M2e primera: http://www.eclipse.org/m2e/

Y luego limpiar el proyecto. Bajo Project -> Clean...

Si de su dominio de nivel superior están en la ruta de clases, por lo general bajo el directorio WEB-INF, los siguientes dos consejos le resuelven el problema (independientemente de la configuración de su entorno):

  1. Asegúrese de que el <uri> en el TLD y el URI de la directiva taglib de sus páginas JSP coinciden. El elemento <uri> del TLD es un nombre único para la biblioteca de etiquetas.

  2. Si el dominio de nivel superior no tiene un elemento <uri>, el contenedor intentará usar el atributo uri en la directiva taglib como un camino hacia el TLD real. por ejemplo, Podría tener un archivo TLD costumbre en mi carpeta WEB-INF y utilizar la ruta al este TLD como el valor uri en mi JSP. Sin embargo, esto es una mala práctica y debe ser evitado desde entonces serían los caminos codificados.

Yo tenía el mismo problema con MyEclipse y Eclipse 6.6.0. Es rojo alineados el valor uri en cada

<%@ taglib prefix="s" uri="/struts-tags"%>. Me fijo por ir a 'Proyecto Bibliotecas / MyEclipse / Web / Tag' y establecer el defecto TLD Prefijo para Struts 1.2 Azulejos Etiquetas de 's'. También tuve que hacer las mismas bajo '/ MyEclipse / Web / configuración del espacio de trabajo del proyecto Configurar ... / Tag Libraries'.

Yo tenía el mismo problema con STS (suite fuente springtool).

En la STS, haga clic derecho sobre el proyecto, que "Propiedades", "Facetas de proyecto", que en la derecha de la ventana, haga clic en la pestaña "tiempo de ejecución", y marca "VMware vFabric tc Server (...)" y haga clic en "Aplicar" y debe estar bien después de la actualización del área de trabajo.

así que hay que entender siempre hay dos cosas a la API y la implementación (importa el formato de Gradle el siguiente código)

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'

Así que si estás usando un contenedor de servlets sin apoyo jstl entonces por supuesto que no proporcionará los dos, un error que he hecho es que yo sólo puse la primera, pero si usted está usando la aplicación de pila completa servidor es decir glassfish entonces glassfish tendrá tanto de ellos ya dentro.

Para mí, este error se produce cada vez que intento utilizar una nueva versión de eclipse. Al parecer, el nuevo Eclipse restablece la variable M2_REPO y consigo toda la biblioteca de códigos de error en la vista Marker (a veces con errores de validación EJB).

Después de actualizar la variable M2_REPO señalar ubicación real repositorio de Maven, tarda 2-3 proyecto -.> Iteraciones limpias en conseguir que todo funcione

Y a veces, hay algunos errores de validación XML (EJB) Junto con esta biblioteca de códigos errores. actualizar manualmente el archivo XML correspondiente, inicia una consulta de archivos * .xsd y las Validación XML errores se resuelven. Publicar esto, los errores de la biblioteca de códigos también se desvanecen.

Por otro lado, si sólo se está trabajando en la fuente de Java y está recibiendo estos errores de cosas que no toca en un gran proyecto que está trabajando, sólo puede apagar las validaciones en Eclipse. Los ajustes están bajo Preferencias-> Web-> JSP Files-> Validación

Yo estaba teniendo el mismo problema utilizando Tomcat 6.0 y Eclipse y probé algo que mi amigo sugirió y funcionó para mí. El enlace para la pregunta que hice y mi respuesta comentados se puede encontrar aquí:

JSTL Tomcat 6.0 no se puede encontrar el error descriptor taglib

Quiero saber si esto resuelve el problema "No se encuentra el descriptor taglibrary".

Este error puede surgir de varias fuentes diferentes. Uno de los casos (no se menciona en otras respuestas a esta pregunta) se produce cuando Eclipse no implementa la versión de la especificación JSP establecido en el documento de dominio de nivel superior. Eclipse libera normalmente la zaga de hasta un año en la implementación de nuevos servlets y JSP especificaciones. Ver este eclipse error por ejemplo.

En este caso, la aplicación web puede funcionar bien en la última versión de Tomcat, pero Eclipse todavía puede quejarse de un dominio de nivel superior que falta. La solución a corto plazo (short de ignorar el error en Eclipse) es para volcar hacia abajo la versión JSP a la que su versión de Eclipse soporta.

Además, tenga en cuenta la versión TLD va a implementar. Los nombres de las etiquetas han cambiado ligeramente de v1.1 a v2.0 (es decir, info está ahora description en taglib y no es un elemento válido bajo tag, muchos de los nombres de los elementos ahora contienen un guión). Eclipse no tiene tolerancia para nombres de etiqueta de TLD mal escritas.

TLD 2,0 (JSP-versión 2.0) Referencia

TLD 2,1 (JSP-versión 2.3) Referencia

reemplazar a jstl.jar jstl1.2.jar resuelto el problema para Tomcat 7.0

También se enfrentó al mismo problema. Asegúrate de que tienes mismas versiones de JSTL en Eclipse y en el directorio de trabajo Tomcat, es decir en \webapps\examples\WEB-INF\lib y en la carpeta lib.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top