Eclipse не может найти tld внутри файла jar

У меня есть JAR-файл, который содержит некоторые теги-файлы.

мой *.tag файлы внутри /META-INF/tags/ папка (банка)

у меня тоже есть mytags.tld внутри /META-INF/ папка (банка)

После упаковать все war проект (с mytags.jar внутри WEB-INF/lib папка), он отлично работает в JBoss. Но Eclipse все еще не может распознать тег, получая ошибку Can not find the tag library descriptor for "http://www.mycompany.com"


Есть ли способ, чтобы Eclipse распознал мои теги?


следуйте источникам:

block.tag

<%@tag description="Item do block" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<%@attribute name="id" required="true" %>
<%@attribute name="label" required="true" %>
<%@attribute name="description" required="false" %>
<%@attribute name="icon" required="false" %>

<div id="${id}" class="block">
    <div class="block-box ${icon}">
        <div class="label">
            <span>${label}</span>
        </div>
        <div class="description">
            ${description}
            <jsp:doBody></jsp:doBody>
        </div>
    </div>
</div>


mytags.tld

<?xml version="1.0" encoding="UTF-8" ?>
<taglib xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
    version="2.1">

    <description>My Tags</description>
    <display-name>MyTags</display-name>
    <tlib-version>1.0</tlib-version>
    <short-name>mytags</short-name>
    <uri>http://www.mycompany.com</uri>

    <tag-file>
        <name>block</name>
        <path>/META-INF/tags/block.tag</path>
    </tag-file>
</taglib>


some.jsp

<%@page contentType="text/html; charset=ISO-8859-1" pageEncoding="UTF-8" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@taglib uri="http://www.mycompany.com" prefix="mytags" %> <-- ECLIPSE MARKS ERROR HERE
<!DOCTYPE html>
<html>

    <head>
        <title>Test</title>
    </head>
    <body>
        <mytags:block id="users" label="Users" icon="user">
            <!-- some content -->
        </mytags:block>
    </body>
</html>

Но все отлично работает в JBoss. Только затмение обвиняет в ошибке.

Спасибо

1 ответ

Существующий отчет об ошибке https://bugs.eclipse.org/bugs/show_bug.cgi?id=330405 предлагает исправить сообщение об ошибке, указав на версию 1.1 JSP, обнаруженную в web.xml, в качестве причины устаревшей интерпретации taglib. URI.

Это подтверждается документом JSP Tag Libraries, http://docs.oracle.com/cd/B14099_19/web.1012/b14014/taglibs.htm:

Как впервые определено в спецификации JSP 1.1, директива taglib страницы JSP может полностью указывать имя и физическое расположение в структуре файла WAR файла TLD, который определяет конкретную библиотеку тегов, как в следующем примере:

<%@ taglib uri="/WEB-INF/oracustomtags/tlds/mytld.tld" prefix="oracust" %>

[..] В качестве альтернативы, как также определено в спецификации JSP 1.1, директива taglib может указывать имя и относительное физическое местоположение приложения файла JAR вместо файла TLD

Оба вышеприведенных соглашения вышли за пределы механизма резервирования, начиная с JSP 1.2, который ввел определения тегов отображения и использует их через произвольные строки taglib uri, http://docs.oracle.com/cd/B14099_19/web.1012/b14014/taglibs.htm.

Недавняя спецификация JSP 2.1 описывает отображение URI в разделе JSP.7.3.2:

URI, описывающий библиотеку тегов, отображается на путь ресурса TLD через карту taglib и запасную интерпретацию, которая должна использоваться, если карта не содержит URI. Карта taglib создается из явной карты taglib в web.xml (описанной в разделе JSP.7.3.3), которая расширяется неявными записями, полученными из упакованных библиотек тегов в веб-приложении (описано в разделе JSP.7.3.4), и неявные записи, известные контейнеру JSP. Резервная интерпретация нацелена на случайное использование механизма, как в цикле разработки Веб-приложения; в этом случае URI интерпретируется как прямой путь к TLD (см. раздел JSP.7.3.6.2).

Другие вопросы по тегам