2011-09-27 101 views
1

我有一个Web应用程序运行在一个(很旧,我知道,但我无法升级)Tomcat 3.3.2最终的servlet容器和我最近升级了虚拟机它运行在Java 6上。这很顺利,所以我试图在应用程序的JSP中使用Java 5特性(特别是泛型),但是它失败了,不喜欢语法。对于它的价值,我把这么简单的东西:强制Tomcat 3.3编译器将Java编译为Java 1.5

java.util.List<String> users= new java.util.Vector<String>(); 

到JSP,让碧玉编译它,但我发现了一个编译错误。我知道Tomcat正在使用正确的JVM,但似乎没有使用“-source 1.5”标志或等效标志。有谁知道我可以如何强制我的Tomcat编译为Java 5?

回答

1

您必须指定要在servlet配置文件使用虚拟机版本(web.xml中):

<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> 
+0

我把代码片段到我的应用程序的WEB-INF/web.xml中,仅低于顶层元素(即作为''的直接子元素),但它仍然没有帮助。还有其他建议吗? – Raj

+0

我一直无法找到证据,但我怀疑泛型只支持新版本的Servlet规范。我相信支持Java 1.5语言特性的规范的最早版本是Tomcat 5.5.x支持的Servlet 2.4/JSP 2.0。请参阅[Apache Tomcat版本](http://tomcat.apache.org/whichversion.html)。 – gcastro

+0

我担心情况可能如此。感谢您的调查。 – Raj