2013-08-14 2 views
2

일부 태그 파일을 포함하는 jar 파일이 있습니다.Eclipse에서 jar 파일 내부에서 tld를 찾을 수 없습니다.

*.tag 파일은 /META-INF/tags/ 폴더 (항아리)

나는 또한 mytags.tld/META-INF/ 내부 폴더 (항아리)가 팩 (WEB-INF/lib 폴더 안에 mytags.jar와) 모든 war 프로젝트 후

, 그것은에서 잘 작동 내부에 JBoss. 그러나 이클립스는 여전히 오류 Can not find the tag library descriptor for "http://www.mycompany.com"


내 태그를 인식 이클립스 할 수있는 방법이 있나요을 받고, 태그를 인식 할 수 없습니다?


는 소스에 따라 :

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> 

그러나 다 보스에서 잘 작동합니다. 일식 만 오류를 비난합니다.

감사

+0

Eclipse의 * 버전 *은 무엇입니까? JSP를 다시 검증하면 메시지가 사라 집니까? – nitind

+0

Eclipse Kepler. 아니요, JSP를 다시 검증 한 후에도 메시지가 사라지지 않습니다. – weakleaf

+0

프로젝트가 WebContent/WEB-INF/lib 폴더에 jar가있는 동적 웹 프로젝트입니까 아니면 Java 빌드 경로에 있습니까? – nitind

답변

1

https://bugs.eclipse.org/bugs/show_bug.cgi?id=330405는 태그 라이브러리 URI의 오래된 해석 이유로 web.xml 파일에서 감지 된 JSP 버전 1.1을 가리 키도록 오류 메시지가 수정 제안 기존 버그 리포트.

http://docs.oracle.com/cd/B14099_19/web.1012/b14014/taglibs.htm#i1014427, JSP 태그 라이브러리 문서에 의해 확인 :

먼저 JSP 1.1 스펙에 정의 된 JSP 페이지의 태그 라이브러리 지시자가 완전히 이름 및 물리적 위치를 지정할 수하는 WAR 내

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

[...] 대안 적으로, 또한 같은 정의들 다음 예에서와 같이, 특정 태그 라이브러리를 정의 TLD 파일의 파일 구조, 인스 JSP로 1.1 사양은 태그 립 지시문 대신 상기 두 규칙 모두 도입 JSP 1.2부터 대체기구 은퇴

TLD 파일의 JAR 파일의 이름 및 애플리케이션 상대적인 물리적 위치를 지정할 수 태그 정의를 매핑하고 임의의 taglib uri 문자열을 통해 사용합니다 (http://docs.oracle.com/cd/B14099_19/web.1012/b14014/taglibs.htm#i1013109).

최근 JSP 2.1 스펙은 JSP 매핑을 설명합니다.2 : 태그 라이브러리를 설명

URI는 태그 라이브러리 맵 비록 TLD 자원 경로와지도 은 URI를 포함하지 않는 경우에 사용되는 대체 해석에 매핑된다. taglib 맵은 웹 애플리케이션의 패키지 태그 라이브러리 ( 섹션 JSP.7.3에서 설명 됨)에서 으로 추론 된 암시 적 항목으로 확장 된 web.xml 의 명시적인 taglib 맵 (섹션 JSP.7.3.3에서 설명)으로 작성됩니다. 4) 및 JSP 컨테이너에 알려진 암시 적 항목 대체 해석은 웹 응용 프로그램의 개발 주기 에서처럼 메커니즘의 우연한 사용을 목표로합니다. 이 경우 URI는 TLD 로의 직접 경로로 해석됩니다 (JSP.7.3.6.2 절 참조).

관련 문제