我正在尝试使用带有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来运行它?
答案 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