jasper/JSP预编译迁移到Tomcat 7的问题- NumberFormatException:用于输入字符串



我有一个工作的web应用程序在Tomcat 5.5上运行,我试图移植到Tomcat 7。在尝试用Jasper2预编译一些jsp时,我遇到了一个问题。我得到:java.lang.NumberFormatException: For input string: "${startYear}"

我认为问题是这个新版本的Jasper (JSP 2.1 impl)在预编译期间试图解引用${startYear}。对于旧版本,我在生成的Java文件中看到${startYear}。

我确信这是一些配置或类路径问题我错过了,但我找不到任何好的链接到解决方案。顺便说一句,我可以通过回到5.5附带的Jasper罐子来让它工作,但如果我可以避免它,我宁愿不这样做。

谢谢你的建议

看起来你在你的webapp的/WEB-INF/lib中有一个悬挂的JSTL 1.0库。EL表达式的编译和求值方式不同。删除旧的JSTL 1.0 jstl.jarstandard.jar文件,并放置一个新的JSTL 1.2 jstl-1.2.jar文件。

不要忘记在任何JSP中更新JSTL标签库uri,以包含自JSTL 1.1以来引入的新的/jsp前缀。例如

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

BalusC的答案是一个可能的原因,但是即使在类路径中只有正确的jar,问题仍然可能发生。我发现也有必要将web.xml更新到servlet规范的新版本——3.0(适用于Tomcat 7)或2.5(适用于Tomcat 6)。

请参阅JSTL标签信息页了解更多详细信息。