【已解决】This absolute uri http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or th

调试环境:


maven


eclipse


tomcat


今天调试程序在jsp页面出现以下异常:


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


网上找了相关资料,最终找到原因,原来是部署项目时jstl jar包没发布到项目的WEB-INF/lib 目录下,导致运行时出现以上错误,当然可复制jstl的jar包到该目录下。


但,我的项目的jstl  jar包已经引用了,我查了下maven的pom.xml:


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


原因就出现在上面红字部分了,maven的<scope>标签说明如下:

  1. compile,缺省值,适用于所有阶段,会随着项目一起发布。 
  2. provided,类似compile,期望JDK、容器或使用者会提供这个依赖。如servlet.jar。(jar不随项目发布)
  3. runtime,只在运行时使用,如JDBC驱动,适用运行和测试阶段。 
  4. test,只在测试时使用,用于编译和运行测试代码。不会随项目发布。 
  5. system,类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它。


看到第2点,就知道真正的原因了,现在只要把pom.xml中定义jstl的provied值删除即可。




参考资料:http://my.oschina.net/boonya/blog/141276




你可能感兴趣的:(【已解决】This absolute uri http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or th)