我正在尝试将jetty与JRE而不是JDK一起使用。我想如果我预编译jsp,并将生成的类文件放在类路径上,那么当浏览器请求时,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-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 运行它?
最佳答案
在努力为在 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
关于jsp - 用jetty加载预编译好的jsps还需要jdk吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21945897/