2

我开发了一个 Web 应用程序并使用 Netbeans 6.9 创建了 war 文件。我在 jsp 和 java 文件中都广泛使用了 Java 5 的特性。在查看包含 for:each 循环的 jsp 页面时部署后,我收到错误消息说,

'for each' statements are only available if source level is 5.0

我读过 WAS6.1 支持 Java5 特性。还检查了java/bin中的jdk版本,是IBM jdk 1.5。

我也试过这个页面中给出的说明。我怀疑在创建war文件以使部署与 Java 5 兼容时是否需要进行任何设置。或者在 IBM WAS 控制台中是否需要进行任何服务器/应用程序级别的设置?

4

1 回答 1

2

正如您所发现的,问题在于基于JSP 2.0(针对 Java 1.3)的WAS 6.1 JSP 引擎。我假设您找到了正确的参数:

jdkSourceLevel

这个 JSP 引擎参数在 WebSphere Application Server 版本 6.1 中被引入以支持 JDK 5。应该使用这个参数而不是 compileWithAssert 参数,尽管 compile WithAssert 在版本 6.1 中仍然有效。此参数的默认值为 13。此参数需要重新生成 Java 源。以下是 jdkSourceLevel 参数值:

  • 13(默认)- 该值将禁用 JDK 1.4 和 JDK 5.0 的所有新语言功能。
  • 14 - 该值将启用断言工具并将禁用 JDK 5.0 的所有新语言功能。
  • 15 - 该值将启用断言工具和 JDK 5.0 的所有新语言特性。

我假设您已使用正确的大小写将其设置在正确的位置并重新启动服务器。我还会检查您的 web.xml 是否声明了 Servlet 2.4 模式,以防这会影响 JSP 引擎。如果做不到这一点,请检查支持站点以获取修复。

如果一切都失败了,您应该能够使用JspBatchCompilerAnt 任务预编译您的 JSP。


我会质疑你为什么要使用 scriptlet,但这是一个不同的对话。

于 2011-05-03T14:15:11.403 回答