迁移到 Tomcat 7 时出现 jasper/JSP 预编译问题 - NumberFormatException:对于输入字符串
我有一个在 Tomcat 5.5 上运行的 Web 应用程序,我正在尝试将其移植到 Tomcat 7。在尝试使用 Jasper2 预编译一些 JSP 时,我遇到了问题。我得到: java.lang.NumberFormatException: For input string: "${startYear}"
我相信问题是这个新版本的 Jasper (JSP 2.1 impl) 试图在预编译期间取消引用 ${startYear} 。在旧版本中,我在生成的 Java 文件中看到 ${startYear}。
我确信这是我缺少的一些配置或类路径问题,但我找不到任何好的解决方案链接。顺便说一句 - 我可以通过恢复到 5.5 附带的 Jasper jar 来让它工作,但如果我可以避免的话,我宁愿不这样做。
感谢您的任何提示
I've got a working webapp running on Tomcat 5.5 that I'm trying to port to Tomcat 7. I'm running into a problem when trying to precompile some JSPs with Jasper2. I get:
java.lang.NumberFormatException: For input string: "${startYear}"
I believe the issue is that this new version of Jasper (JSP 2.1 impl) is trying to dereference ${startYear} during precompilation. With the older version I see ${startYear} in the generated Java file.
I'm sure this is some config or classpath issue I'm missing, but I can't find any good links to a solution. BTW - I can get it to work by reverting back to the Jasper jars that come with 5.5, but I'd rather not do that if I can avoid it.
thanks for any tips
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
看起来您的 web 应用程序的
/WEB-INF/lib
中有一个悬空的 JSTL 1.0 库。 EL 表达式的编译和计算方式不同。删除旧的 JSTL 1.0jstl.jar
和standard.jar
文件,并放入全新的 JSTL 1.2jstl-1.2.jar
文件到位。不要忘记更新任何 JSP 中的 JSTL taglib URI,以包含自 JSTL 1.1 以来引入的新
/jsp
前缀。例如Look like that you've a dangling JSTL 1.0 library around in your webapp's
/WEB-INF/lib
. EL expressions are compiled and evaluated differently. Remove both the old JSTL 1.0jstl.jar
andstandard.jar
files and put a fresh new JSTL 1.2jstl-1.2.jar
file in place.Don't forget to update the JSTL taglib URIs in any JSP to include the new
/jsp
prefix which was introduced since JSTL 1.1. E.g.BalusC 的答案是一种可能的原因,但即使类路径中只有正确的 JAR,问题仍然可能发生。我发现还需要将 web.xml 更新为较新版本的 servlet 规范 - 3.0(对于 Tomcat 7)或 2.5(对于 Tomcat 6)。
有关更多详细信息,请参阅 JSTL 标记信息页面。
BalusC's answer is one possible cause, but even with just the correct JARs in the classpath the problem can still occur. I found it was also necessary to update the web.xml to a newer version of the servlet specification - 3.0 (for Tomcat 7) or 2.5 (for Tomcat 6).
See the JSTL tag info page for more details.