我开发了一个Web应用程序并使用Netbeans 6.9创建了war文件。我在jsp和java文件中广泛使用了Java 5的功能。在查看包含for:每个循环的jsp页面的部署之后,我收到错误消息,说明了
'for each' statements are only available if source level is 5.0
我读过WAS6.1支持Java5功能。还检查了java / bin中的jdk版本,它是IBM jdk 1.5。
我也尝试了this page中给出的说明。我怀疑是否有任何设置要做,同时创建war
文件以使部署与Java 5兼容。或者在IBM WAS控制台中是否有任何服务器/应用程序级别设置?
答案 0 :(得分:2)
正如您所发现的,问题是WAS 6.1 JSP engine基于JSP 2.0(针对Java 1.3)。我假设你找到了正确的参数:
<强> jdkSourceLevel 强>
这个JSP引擎参数是 在WebSphere Application中引入 服务器版本6.1支持JDK 5。 应该使用此参数 的compileWithAssert参数, 虽然编译WithAssert仍然 适用于6.1版。默认 此参数的值为13.此 参数需要再生 Java源码。以下是 jdkSourceLevel参数值:
- 13 (默认) - 此值将禁用所有新语言功能 JDK 1.4和JDK 5.0。
- 14 - 此值将允许使用断言工具和将 禁用所有新语言功能 JDK 5.0。
- 15 - 此值将允许使用断言工具和所有 JDK 5.0的新语言功能。
我假设您已使用正确的案例在the right place中设置此项并重新启动服务器。如果这会影响JSP引擎,我还会检查你的web.xml declares the Servlet 2.4 schema。如果做不到这一点,请检查支持网站是否有修复。
如果所有其他方法都失败,您应该可以使用JspBatchCompiler或Ant task预编译JSP。
我会问你为什么要使用scriptlet,但这是一个不同的对话。