At least one JAR was scanned for TLDs解决办法

近日在进行web项目开发过程中,遇到一个很奇怪的情况:项目在我自己的电脑上面运行正常,而且能够输出正常结果,但是将项目部署到服务器时,访问就提示出错。

web项目采用hibernate+struts+JSP进行开发,在本地以及服务器上面均使用的是tomcat7.0。

通过浏览器访问服务器上面的项目时提示:“org.apache.jasper.JasperException: An exception occurred processing JSP page /decorators/searchDnaResultList.jsp at line 394”,提示出错代码如下:

392: <span style="white-space: pre-wrap;"><div style="float: left;"></span> 393: 	<span style="white-space: pre-wrap;"><span class="style1" ></span> 394: 	     <span style="white-space: pre-wrap;"><span style="color:#ff0000;"><c:if test="${sdr.hspScore!=0}"></span></span> 395: 	<span style="white-space:pre">	</span>  <span style="white-space: pre-wrap;">${sdr.hspScore}</span><span style="white-space:pre"> </span>396: 	     </c:if><span>	</span> 397: 	<span style="white-space: pre-wrap;"></span></span><span style="white-space: pre-wrap;">	</span><span style="white-space: pre-wrap;">  </span> 398: </div>

但是通过分析相关代码,发现这部分代码并没有错误,而且在本地能够正常运行也验证了代码的正确性。

既然代码没错,那么可能就是服务器上面配置可能出现问题,首先想到的就是tomcat出现问题,然后通过查看tomcat的日志发现了如下的提示语句:


Dec 29, 2014 7:09:26 PM org.apache.jasper.compiler.TldLocationsCache tldScanJar
338 INFO: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.

提示表明tomcat编译出错了At least one JAR was scanned for TLDs yet contained no TLDs,原来是tomcat 7对EL表达式的语法要求比较严格,例如"${owner.new}"因包含关键字new就会导致解析出错。 
根据网友的提示,主要用以下三种解决方案可供参考:
第一种:严格遵守java规范,修改对象的属性名称,要求不包含java关键字; 
第二种:修改EL表达式,例如"${owner.new}"可以修改为"${owner['new']}"; 
第三种:修改tomcat属性,忽略对EL表达式的关键字检查。修改$CATALINA_BASE/conf/catalina.properties文件,添加org.apache.el.parser.SKIP_IDENTIFIER_CHECK=true选项。

相关推荐