网上各种解决办法都是版本错误什么的,换个版本的Maven依赖,挂了代理都下不动,手动导了包又报了个ClassNotFound,WEB-INF下的lib也有对应的jar包,后来发现貌似是犯二了,没有导入jstl-impl,又搜了一下,这哥们正确配置Jstl的Maven依赖 给了正确的Maven依赖配置:
< dependency > < groupId > javax.servlet.jsp.jstl </ groupId > < artifactId > jstl-api </ artifactId > < version > 1.2 </ version > < exclusions > < exclusion > < groupId > javax.servlet </ groupId > < artifactId > servlet-api </ artifactId > </ exclusion > < exclusion > < groupId > javax.servlet.jsp </ groupId > < artifactId > jsp-api </ artifactId > </ exclusion > </ exclusions > </ dependency > < dependency > < groupId > org.glassfish.web </ groupId > < artifactId > jstl-impl </ artifactId > < version > 1.2 </ version > < exclusions > < exclusion > < groupId > javax.servlet </ groupId > < artifactId > servlet-api </ artifactId > </ exclusion > < exclusion > < groupId > javax.servlet.jsp </ groupId > < artifactId > jsp-api </ artifactId > </ exclusion > < exclusion > < groupId > javax.servlet.jsp.jstl </ groupId > < artifactId > jstl-api </ artifactId > </ exclusion > </ exclusions > </ dependency >
其实现在看来原因是现有的项目中已经有了对jsp-api和javax.servlet-api的引用,再引入一个JSTL,JSTL也会引入自身一套的jsp-api和javax.servlet-api引用,所以需要在pom.xml中把jstl引用的jsp-api和javax.servlet-api给exclusion掉。
普通的javaee项目无非就需要3个jar包
< dependency > < groupId > javax.servlet </ groupId > < artifactId > javax.servlet-api </ artifactId > < version > 3.0.1 </ version > < scope > provided </ scope > </ dependency > < dependency > < groupId > javax.servlet.jsp </ groupId > < artifactId > jsp-api </ artifactId > < version > 2.1 </ version > < scope > provided </ scope > </ dependency > < dependency > < groupId > javax.servlet </ groupId > < artifactId > jstl </ artifactId > < version > 1.2 </ version > </ dependency >
这里面JSTL没有jstl-impl.jar,对运行也没什么影响。。至于网上说的比较多的standard.jar标准标签库在jstl1.2以后的高版本不再需要了。