GWT+Jetty JSP 编译器问题的解决方法? (Java 1.5 源代码级别无法识别)

Posted

技术标签:

【中文标题】GWT+Jetty JSP 编译器问题的解决方法? (Java 1.5 源代码级别无法识别)【英文标题】:workaround for GWT+Jetty JSP compiler issue? (Java 1.5 source level not recognized) 【发布时间】:2010-10-22 21:08:45 【问题描述】:

正如this thread 所示,使用新的 Jetty 服务器在 GWT 托管模式下编译 JSP 似乎存在问题:

2. ERROR in /tmp/Jetty_0_0_0_0_8080_war____ut4fm1/jsp/org/apache/jsp/ 
test_jsp.java (at line 53) 
        new java.util.ArrayList<String>(); 
                                ^^^^^^ 
Syntax error, parameterized types are only available if source level 
is 1.5 

有人有解决方法吗? this commit 可能是相关的。我不知道应该使用与 org.eclipse.jdt.core.JDTCompilerAdapter 等效的内容在 Eclipse 之外进行构建(例如在命令行上)。这对于我们采用 GWT 1.6 来说是一个真正的障碍,因此非常感谢任何指针。

【问题讨论】:

【参考方案1】:

这个问题是由 JspServlet 使用的默认值产生的,它使用 1.4 编译源/目标值。

    您可以通过添加来配置此 servlet

    <servlet>
        <servlet-name>jsp</servlet-name>
        <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
        <init-param>
            <param-name>compilerSourceVM</param-name>
            <param-value>1.5</param-value>
        </init-param>
        <init-param>
            <param-name>compilerTargetVM</param-name>
            <param-value>1.5</param-value>
        </init-param>
        <load-on-startup>3</load-on-startup>
    </servlet>
    
    还有一个问题,因为您无法使用当前的 jasper-compiler-5.0.28 配置 JspServlet。您应该下载 jasper-compiler-5.0.30 并确保在 gwt 之前位于您的类路径中。还有其他最新的 jasper 编译器 jar,但我不知道与 jakarta-tomcat-5.0.28 的兼容性如何。 我通过在 GWT 1.6.4 中添加对 jakarta-tomcat-5.0.30 的依赖解决了这个问题。你可以从http://raisercostin.googlecode.com/files/gwt-windows-1.6.4.raisercostin.zip下载使用这个依赖编译的GWT

我也在http://code.google.com/p/raisercostin/wiki/GwtEclipsePluginDebug 描述了解决方案。

【讨论】:

以上是关于GWT+Jetty JSP 编译器问题的解决方法? (Java 1.5 源代码级别无法识别)的主要内容,如果未能解决你的问题,请参考以下文章

GWT Spring 安全集成(纯 GWT,无 JSP)

将外部资源添加到 GWT 开发模式服务器 (Jetty)

GWT SSL + Jetty + 同源策略 = 混乱

从 JSP 页面调用我的 GWT 后端方法

如何让 Tomcat 在启动时预编译 JSP?

Gears 对 GWT 项目中的 JRE 1.5 的投诉