2010-03-11 60 views
21

我的GoDaddy服務器出現以下問題。 我正在使用JSP和JSTL庫。我的/ WEB-INF/lib文件夾包含以下庫:JasperException:絕對URI:無法解析http://java.sun.com/jsp/jstl/core

的jstl.jar standard.jar

我的JSP看起來是這樣的:

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

<p>Hello! <% 
out.print(System.getProperty("java.class.path")); 

%></p> 

但我不斷收到以下異常:

org.apache.jasper.JasperException: The absolute uri: 
    http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml 
    or the jar files deployed with this application 

任何想法,爲什麼它這樣做?

+0

您使用的是哪種版本的JSTL? – 2010-03-11 18:21:00

+0

正如你明確提到的Godaddy,我可以假設它只是在本地開發環境中工作嗎?如果是這樣,你的'web.xml'看起來像什麼? – BalusC 2010-03-11 18:33:16

回答

29

您需要獲取正確版本的JSTL,它們使用不同的URI。

如果那個不工作,請嘗試:http://download.java.net/maven/1/jstl/jars/jstl-1.2.jar(JSTL 1.2),或者拉下1.1 JSTL罐子。

coderanch有一個更詳細的版本/ URI列表。

+3

或者如果你正在使用maven: JSTL JSTL 1.2 2013-06-28 07:10:55

+0

的JavaRanch的鏈接已經死了......會一直比較有用,包括在這裏這個信息,而不是鏈接到第三方現場。 – 2016-01-07 07:14:24

4

你需要添加以下JAR文件在你的web應用

jakarta-jstl-1.1.2.jar 
and jakarta-standard-1.1.2.jar files 

最近我有同樣的問題,我已經加入上述兩個jar文件

3

我用的Tomcat6 37 至於解決我,我嘗試過上面提到的解決方案,但仍然有錯誤。 將jstl-1.2.jar添加到我的%CATALINA_HOME%\ lib目錄後,問題得以解決。

+0

發生這種情況是因爲jstl-1.2.jar在某種程度上不可用,因此將它添加到服務器庫並不是一個好主意,但它確實可以解決問題。 – 2016-12-07 15:15:29

3

的答案在這裏分別說明問題有用的,但它並沒有幫我診斷爲什麼時,我還以爲是加載正確的JSTL版本中,它正在發生。最終,我必須調試應用程序,並在TLD文件處理器(可能是org.apache.jasper.compiler.TagLibraryInfoImpl.getTagLibraryInfos())中放置一個斷點以查看它從哪裏獲取TLD文件。

然後我發現它從一個我沒懷疑擁有它的jar加載舊版本的TLD文件 - 它是GWT(ick)子系統的依賴項。一旦違規的jar從我的maven依賴中刪除,問題就解決了。

希望這將有助於未來的其他人。

+0

我知道這已經有一段時間了,但我面臨着一個極其類似的問題(同樣在GWT中使用JSTL--我假設GWT的超級開發模式所使用的Jetty服務器與它有關)。你碰巧記得爲了解決這個問題,你必須刪除哪個冒犯的jar? – 2016-01-08 05:33:25

+0

對不起,但我不記得了。我想我使用了調試模式,並查看了一次停止後我在哪個罐子裏。祝你好運。 – Gray 2016-01-08 16:20:50

+0

不用擔心,謝謝 - 我會捅一捅,看看能否找到它是哪個罐子。不能相信用JSTL使用GWT是很困難的...... – 2016-01-12 00:38:43