前言
由于在某个jsp引用了struts标签库,导致该错误产生--这是stuts项目算是一道经典错误,往往最后的解决方式是更换Tomcat。今天我记录的是引起这一错误的一个非常隐藏的原因。
错误描述
JSP
启动发生错误
原因
换了Tomcat可以很好的解决此问题,但令人不解的是为何如此?笔者经过对比,发现了原因:
由于某项目启动发生StackOverflowError 异常(具体参见此文章),修改Tomcat的catalina.properties文件可避免此异常,修改之处如下
而这处修改虽然能够很好的解决StackOverflowError 异常,但这是会造成本文所说的File "/struts-tags" not found 异常。所以解决方式就是:1.这里catalina.properties文件恢复默认配置(但这样一来就是某项目也无法启动)。2.页面不引用标签库。
至于其中原因笔者本想通过调试一探究竟,然而现在还不知如何调试Tomcat的源码包。按StackOverflowError 文章中所叙述的大概是因为Tomcat在启动时会扫描所以jar,而加上 ,* 就不会递归扫描了。。。
顺便说一下,不仅是struts,JSTL也会这样。
后记
以后有机会一定把此问题和StackOverflowError 问题一起研究,弄清楚Tomcat的启动扫包问题。此外,当遇到StackOverflowError异常后,争取换其他方式而不是更改catalina.properties文件的方式。