迁移到 Tomcat 7 时出现 jasper/JSP 预编译问题 - NumberFormatException:对于输入字符串

发布于 2024-12-01 22:57:30 字数 392 浏览 1 评论 0原文

我有一个在 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

但可醉心 2024-12-08 22:57:30

看起来您的 web 应用程序的 /WEB-INF/lib 中有一个悬空的 JSTL 1.0 库。 EL 表达式的编译和计算方式不同。删除旧的 JSTL 1.0 jstl.jarstandard.jar 文件,并放入全新的 JSTL 1.2 jstl-1.2.jar 文件到位。

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

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

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.0 jstl.jar and standard.jar files and put a fresh new JSTL 1.2 jstl-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.

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
琉璃繁缕 2024-12-08 22:57:30

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文