我在Tomcat 5.5上运行了一个正在运行的webapp,我正在尝试移植到Tomcat 7.我在尝试使用Jasper2预编译一些JSP时遇到了问题。我明白了: java.lang.NumberFormatException:对于输入字符串:“$ {startYear}”
我认为问题是这个新版本的Jasper(JSP 2.1 impl)试图在预编译期间取消引用$ {startYear}。对于旧版本,我在生成的Java文件中看到$ {startYear}。
我确定这是我缺少的一些配置或类路径问题,但我找不到任何解决方案的良好链接。顺便说一句 - 我可以通过恢复到5.5附带的Jasper罐子来实现它,但如果我能避免它,我宁愿不这样做。
感谢任何提示
答案 0 :(得分:1)
看起来你的webapp /WEB-INF/lib
中有一个悬空的JSTL 1.0库。 EL表达式的编译和评估方式不同。删除旧的JSTL 1.0 jstl.jar
和standard.jar
文件,并放置一个全新的JSTL 1.2 jstl-1.2.jar
文件。
不要忘记更新任何JSP中的JSTL taglib URI,以包含自JSTL 1.1以来引入的新/jsp
前缀。 E.g。
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
答案 1 :(得分:0)
BalusC的答案是一个可能的原因,但即使在类路径中只有正确的JAR,问题仍然可能发生。我发现还需要将web.xml更新为较新版本的servlet规范 - 3.0(对于Tomcat 7)或2.5(对于Tomcat 6)。
有关详细信息,请参阅JSTL tag info page。