如何更改tomcat编译器

Len*_*kus 15 tomcat java-7

我正在尝试在字符串功能上使用新的Java 7开关.

但是Tomcat没有合作.

我确保tomcat在java 7下运行,但它似乎没有在它下面进行编译.

我已将以下内容添加到jsp servlet条目下的web.xml文件中

    <init-param>
        <param-name>compiler</param-name>
        <param-value>C:/Program Files/Java/jdk1.7.0/bin/javac.exe</param-value>
    </init-param>
Run Code Online (Sandbox Code Playgroud)

但它似乎没有做到这一点.

任何提示将不胜感激.

min*_*das 11

我们正在运行Tomcat 6并遇到了同样的问题.我们的解决方案是:

  • 替换tomcat/lib/ecj-3.3.1.jarecj-3.7.2.jar(可以从最新的Tomcat 7版本中获取);
  • 将此添加到 tomcat/conf/web.xml

    ...
    <servlet>
      <servlet-name>jsp</servlet-name>
      <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
      <init-param>
          <param-name>fork</param-name>
          <param-value>false</param-value>
      </init-param>
      <init-param>
          <param-name>xpoweredBy</param-name>
          <param-value>false</param-value>
      </init-param>
      <init-param>                                    <!-- this should be added -->
          <param-name>compilerSourceVM</param-name>
          <param-value>1.7</param-value>
      </init-param>
      <init-param>
          <param-name>compilerTargetVM</param-name>
          <param-value>1.7</param-value>
      </init-param>                                   <!-- last added line -->
      <load-on-startup>3</load-on-startup>
    </servlet>
    
    Run Code Online (Sandbox Code Playgroud)

当然,更简单的替代方法是安装Tomcat 7,但这可能不适合所有人.