1.問題描述:
在web的jsp文件中想用jstl這個標准庫,在運行的時候很自然的引用jar包如下:
<dependency> <groupId>javax.servlet.jsp.jstl</groupId> <artifactId>jstl-api</artifactId> <version>1.2</version>
</dependency>
在jsp界面引語句如下:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
表面上看沒毛病,但是運行的時候,頁面直接500了,報錯為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] with root cause大致意思為這個絕對路徑[http://java.sun.com/jsp/jstl/core]既沒有在web.xml配置有沒有在jar包文件下部署。
總而言之就是----項目找不到jstl這個庫了。
2.解決方法:
經過瀏覽網上的分析,我的問題是,maven工程發布到tomcat服務器上的過程中,工程並沒有將本地已經配置好的jstl1.2的jar包jia部署到tomcat的lib里,所以在工程運行后,點擊引用了jstl庫的頁面顯示500並在eclipse中報錯。我將本地倉庫中jstl.jar復制到tomcat的lib中重新發布一下項目,就恢復正常了。
3.關於問題的情況總結
關於這個問題,我看到的的情況有很多種,大家不妨對照一下:
<1>jar包引用問題
- 項目中沒有加載jstl.jar
- 加載了版本低於1.0的jstl.jar卻沒有加載對應的standard.jar包(1.1以上的版本jstl中就包含standard包了)
<2>jar包引用格式的問題
- 項目中加載了1.0以下的jstl.jar在jsp界面引用的格式為:
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
2.jstl.1.1版本以及1.2版本都換了一種新的路徑:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<3>tomcat沒有部署相關的jar包
將本地倉庫中jstl.jar復制到tomcat的lib中重新發布一下項目,就OK了。