目录
一、背景:
1、报错原文:
org.apache.jasper.JasperException: 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
2、开发背景:
接手到一个旧项目的二次开发,内网办公,使用了内网提供的tomcat启动项目,总是时不时的这个错误。
当时的解决方案是:直接把报错提示的jar包,进行冲突解决(即删除某个冲突包)。然后后来发现,根本原因实际上是,因为tomcat启动时,配置中设置跳过了所有的tld扫描,导致启动时项目中tld文件未被正常读取而报错。
二、解决方案
1、修改Tomcat配置文件:apache-tomcat-8.x\conf\catalina.properties
在内网自带的tomcat配置文件中,配置文件被写成这样:
先打开文件,找到 tomcat.util.scan.StandardJarScanFilter.jarsToSkip= (jar跳过配置)这个配置段:
通常在108行,往下检查,当时公司的文件中,对这个配置项的最后一行:
是的,有可能是内网下发者把软件配置改了或者tomcat8.0默认写法,我个人电脑下载的8.5写法是没有最后的{ ,* }这2个字符,由于最后多了这个逗号隔开的*,导致所有的文件实际上都是被tomcat跳过了扫描,然后项目读取文件配置自带的TLD指向的URI,可能就导致了冲突。
所以,最后把这个配置修改为这样就正常了:
2、其他因素:
对于这个错误,大家可以去搜索下,有其他的博主碰到不同的情况,我个人对tomcat的底层运行逻辑也不太了解,暂时认为这个是根原因,如果有不同情况,也可以去记录下。