今天在使用idea做jsp的项目时,首先发现在jsp页面里引入的DTD报错,idea不识别DTD。而tomcat运行正常,点击页面跳转到有jstl的DTD页面时报错,检查浏览器,发现如下问题:
org.apache.jasper.JasperException: This absolute urihttp://java.sun.com/jsp/jstl/core) cannot be resolved in either web.xml or the jar files deployed with this application
异常出现的问题有三
其一:jstl版本问题
jstl1.0的DTD写法是:
jstl1.1以后的写法是:
排查问题:我用的是1.1.2版本的jar,项目中引用的DTD是1.1.2的DTD。
其二:jstl的jar的问题
classes文件中lib下有jar,但是WEB_INF的lib下没有jar包。
排查问题:classes下lib中有jar包,但是WEN-INF下的lib文件夹下没有。
其三:发现引入jar之后还是会报错(低版本ide的问题)
但是idea还是会报错,因为它不认识这个标签,所以需要在设置里进行添加。
选择File—>Setting在Setting下找到languages&Frameworks—->Schemas and DTDs,在右边的External Schemas and DTDs框下点击+,然后在URI中填入http://java.sun.com/jsp/jstl/core 在explorer中找到解压文件的tld目录下的c.tld文件,并选择,到这里,你就可以结局idea不识别jstl的问题
排查问题:我用的是最新的idea,所以没有出现这个问题。引入之后直接可用,虽然在Setting中找不到对应的Schemas标签的uri,但是依然可用。不清楚为什么,如果有懂的大佬,欢迎留言相告,不胜感激。