2012-01-04 172 views
14

當在Eclipse 運行我的JSF 2應用程序我得到的是TLD跳過如下因爲它已經定義了幾種信息日誌:什麼是「INFO:TLD跳過,URI已經定義」是什麼意思?

Jan 3, 2012 7:24:45 PM org.apache.catalina.startup.TaglibUriRule body 
INFO: TLD skipped. URI: http://www.springframework.org/tags/form is already defined 
Jan 3, 2012 7:24:45 PM org.apache.catalina.startup.TaglibUriRule body 
INFO: TLD skipped. URI: http://www.springframework.org/tags is already defined 
Jan 3, 2012 7:24:45 PM org.apache.catalina.startup.TaglibUriRule body 
INFO: TLD skipped. URI: http://java.sun.com/jstl/core_rt is already defined 
Jan 3, 2012 7:24:45 PM org.apache.catalina.startup.TaglibUriRule body 
INFO: TLD skipped. URI: http://java.sun.com/jstl/core is already defined 
Jan 3, 2012 7:24:45 PM org.apache.catalina.startup.TaglibUriRule body 
INFO: TLD skipped. URI: http://java.sun.com/jsp/jstl/core is already defined 
Jan 3, 2012 7:24:45 PM org.apache.catalina.startup.TaglibUriRule body 
INFO: TLD skipped. URI: http://java.sun.com/jstl/fmt_rt is already defined 
Jan 3, 2012 7:24:45 PM org.apache.catalina.startup.TaglibUriRule body 
INFO: TLD skipped. URI: http://java.sun.com/jstl/fmt is already defined 
Jan 3, 2012 7:24:45 PM org.apache.catalina.startup.TaglibUriRule body 
INFO: TLD skipped. URI: http://java.sun.com/jsp/jstl/fmt is already defined 
Jan 3, 2012 7:24:45 PM org.apache.catalina.startup.TaglibUriRule body 
INFO: TLD skipped. URI: http://java.sun.com/jsp/jstl/functions is already defined 
Jan 3, 2012 7:24:45 PM org.apache.catalina.startup.TaglibUriRule body 
INFO: TLD skipped. URI: http://jakarta.apache.org/taglibs/standard/permittedTaglibs is already defined 
Jan 3, 2012 7:24:45 PM org.apache.catalina.startup.TaglibUriRule body 
INFO: TLD skipped. URI: http://jakarta.apache.org/taglibs/standard/scriptfree is already defined 
Jan 3, 2012 7:24:45 PM org.apache.catalina.startup.TaglibUriRule body 
INFO: TLD skipped. URI: http://java.sun.com/jstl/sql_rt is already defined 
Jan 3, 2012 7:24:45 PM org.apache.catalina.startup.TaglibUriRule body 
INFO: TLD skipped. URI: http://java.sun.com/jstl/sql is already defined 
Jan 3, 2012 7:24:45 PM org.apache.catalina.startup.TaglibUriRule body 
INFO: TLD skipped. URI: http://java.sun.com/jsp/jstl/sql is already defined 
Jan 3, 2012 7:24:45 PM org.apache.catalina.startup.TaglibUriRule body 
INFO: TLD skipped. URI: http://java.sun.com/jstl/xml_rt is already defined 
Jan 3, 2012 7:24:45 PM org.apache.catalina.startup.TaglibUriRule body 
INFO: TLD skipped. URI: http://java.sun.com/jstl/xml is already defined 
Jan 3, 2012 7:24:45 PM org.apache.catalina.startup.TaglibUriRule body 
INFO: TLD skipped. URI: http://java.sun.com/jsp/jstl/xml is already defined 

我很想知道,是什麼數平均?

+0

請不要轉發您的問題。 – NullUserException 2012-01-06 02:55:09

+2

鏈接的重複帖子已被刪除 – 2013-03-19 09:38:34

回答

11

這意味着您的webapp的運行時類路徑中有TLD文件重複。由於TLD通常包含在庫JAR文件中,因此這意味着您的webapp的運行時類路徑中存在重複的JAR文件。

假設您尚未觸及應用服務器的/lib文件夾或JDK的/lib文件夾,那麼這些重複項位於WAR構建的/WEB-INF/lib文件夾中。清理它。通過規範所要求的URI

3

優先順序是:

J2EE platform taglibs - Tomcat doesn't provide these 

web.xml entries 

JARS in WEB-INF/lib & TLDs under WEB-INF (equal priority) 

Additional entries from the container 

Tomcat的負載TLD兩次。

1,當Tomcat啓動時,它加載tld以在tld文件中查找偵聽器。

2,當第一個jsp文件被編譯時,它構建一個tld對的緩存。

1,負載TLD找到聽衆在TLD文件

當從web.xml文件加載,提出的taglib-URI從web.xml和URI從TLD文件轉換爲一組。 從WEB-INF或jar加載時,uri來自tld文件。

Tomcat需要避免重複的tld偵聽器添加,因此它會檢查uri是否存在於集合中。如果uri已經存在,那麼會記錄您發佈的消息並跳過添加tld偵聽器。

2,建立緩存

1)web.xml中的條目,標籤URI是從web.xml中得到了在WEB-INF

2)掃描TLD文件,標籤URI是從有tld文件

3)掃描瓶,標籤uri是從tld文件中獲得的。

如果uri存在,則該條目將被忽略。

0

這意味着,例如,如果您使用的是Tomcat和Maven(或其他服務器),而您運送的是已在服務器上找到的JSTL庫並且該服務器確實抱怨。

<dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>jstl</artifactId> 
     <version>1.2</version> 
    </dependency> 

在你的應用程序部署(在Tomcat)的時候,那麼你得到的錯誤信息:

INFO: TLD skipped. URI: http://java.sun.com/jstl/core_rt is already defined 
Mar 02, 2017 2:19:32 PM org.apache.catalina.startup.TaglibUriRule body 

的解決方案是使用標籤「範圍」和「提供」的價值,因爲JSTL已經與Tomcat一起發貨(僅限於您的IDE):

<dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>jstl</artifactId> 
     <version>1.2</version> 
     <scope>provided</scope> 
    </dependency> 

然後錯誤將會消失。