使用预编译的jetty加载jsps仍然需要jdk?

时间:2014-02-21 21:50:25

标签: jsp jetty precompile

我正在尝试使用带有JRE而不是JDK的jetty。我想如果我预先编译jsps,并将生成的类文件放在类路径上,那么当浏览器请求时,应该不需要jetty尝试编译jsp,但是我得到了

org.apache.jasper.JasperException: PWC6345: There is an error in invoking javac. 
A full JDK (not just JRE) is required

当我从浏览器请求jsp时,无论我做什么。

我的webdefault.xml中有这些init参数,并且构建的类文件肯定在类路径中

   <init-param>
        <param-name>reloading</param-name>
        <param-value>false</param-value>
   </init-param>
   <init-param>
        <param-name>development</param-name>
        <param-value>false</param-value>
   </init-param>
   <init-param>
        <param-name>classpath</param-name>
        <param-value>c:/project/build/classes</param-value>
   </init-param>

如何让jetty不再尝试再编译jsp所以我可以用jre而不是jdk来运行它?

1 个答案:

答案 0 :(得分:2)

在为JRE上运行的Jetty的预编译JSP进行摔跤之后,我发现不需要预编译。 Jetty(7.5.5及更高版本)附带了一个编译器,当使用JRE运行Jetty时,该编译器可用于编译JSP。详情可在此页面找到:

https://wiki.eclipse.org/Jetty/Howto/Configure_JSP#Compiling_JSPs

简而言之,请将以下代码段添加到jetty.xml

<Call class="java.lang.System"  name="setProperty">
  <Arg>org.apache.jasper.compiler.disablejsr199</Arg>
  <Arg>true</Arg>
</Call>

或此行到start.ini

-Dorg.apache.jasper.compiler.disablejsr199=true