偶在页面里引入了标签如下:
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
出错提示:
org.apache.jasper.JasperException: /index.jsp(0,0) This absolute uri (http://java.sun.com/jstl/core) cannot be resolved in either web.xml or the jar files deployed with this application
at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:94)
at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:428)
at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:126)
at org.apache.jasper.compiler.Parser.processIncludeDirective(Parser.java:307)
at org.apache.jasper.compiler.Parser.parseIncludeDirective(Parser.java:340)
at org.apache.jasper.compiler.Parser.parseDirective(Parser.java:378)
at org.apache.jasper.compiler.Parser.parseElements(Parser.java:795)
at org.apache.jasper.compiler.Parser.parse(Parser.java:122)
at org.apache.jasper.compiler.ParserController.parse(ParserController.java:199)
at org.apache.jasper.compiler.ParserController.parse(ParserController.java:153)
at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:227)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:369)
at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:473)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:190)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
我认为,jsp页面的taglib指令用uri属性指明tld文件位置,当jsp页面被请求时,服务器会企图通过uri指示的位置读取tld文件。
出现楼主所述错误有两个可能的原因:
1、uri指示的位置不存在tld文件。
2、由于网络故障,无法访问uri指定的位置。
如果taglib指令的uri指向internet上某个位置,比如“http://java.sun.com/jstl/core”,就容易遇到上述问题,
为避免这样的问题,我的做法是:
下面这个方法在网上找到的 没有试过
首先,把tld文件拷贝到自己的web应用中,如拷贝到/WEB-INF/taglibs下面。
然后,在web.inf中加上类似这样的内容:
<taglib>
<taglib-uri>jsf_core</taglib-uri>
<taglib-location>/WEB-INF/taglibs/c.tld</taglib-location>
</taglib>
页面的taglib指令写成这个样子:
<%@ taglib uri="jsf_core" prefix="c" %>