改了部分代码,执行时突然遇到如题异常,百思不得其解,明明没有动JSP和Servlet,怎么突然报这个错...
网上找不到解决办法,也没有什么相关资料。后来只得手工排查,单独访问JSP页面没有问题,一旦连接上Servlet就出事,也不知道是什么东西造成这个问题。由于报的是EL的错,起先以为是JSTL版本的问题,不过想想刚才还好好地么,不可能是这个原因。后来根据访问的URL在页面里把相应的代码删除,恢复正常了。重复几次之后找到了出问题的地方,报错如下:
exception
org.apache.jasper.JasperException: Exception in JSP: /inc/pagination.jsp:5
2: <%@ taglib prefix="pg" uri="http://jsptags.com/tags/navigation/pager" %>
3: <!-- 底部分页 -->
4: <div align=center style="font-size:16px;padding-top:5px;padding-bottom:8px;" >
5: <pg:pager url="list.do" items="${requestScope['pe.pager'].maxElements}"
6: maxPageItems="${requestScope['pe.pager'].pageSize}" ">
7: <pg:index>
8: <pg:first unless="current"><a href="${pageUrl}&p=${pageNumber......
root cause
java.lang.ArithmeticException: / by zero com.jsptags.navigation.pager.PagerTag.pageNumber(PagerTag.java:334) com.jsptags.navigation.pager.PagerTag.doStartTag(PagerTag.java:372) org.apache.jsp.list_jsp._jspService(list_jsp.java:626) ......
看来是分页中的JSP片段,打开一看,这才想起刚才是修改了Servlet的映射路径,导致与<pg:pager url="list.do"中的不符合了,分页组件找不到Servlet了
但是这并不问题的真正所在,改完之后,发现即使将分页代码删除,问题依旧。最后经过排查,错误定位到了代码中使用的<c:forEach>的部分,只要不使用便没问题。调了一个晚上没有效果,java.lang.AbstractMethodError像个幽灵一样不肯离去,最后一气之下,新建个工程重新来做,一段代码一段代码的从原工程里拷过来。这次用的tomcat6,最后竟然没问题了。换至tomcat5.5.26下面,问题依旧,看来貌似是tomcat版本的问题啊。目前依然未找到真正的原因,只是在tomcat6下开发,一切正常。
本文记录了一次因Servlet映射路径更改导致JSP分页出现ArithmeticException异常的排查过程,通过逐步删减代码定位到问题源头,并最终确定为Tomcat版本影响。
163





