Jetty 9 (emedded) JSP 运行时编译
Jetty 9 (emedded) JSP compilation at runtime
正在将基于 Jetty 6 的应用程序迁移到 9.2(嵌入式)。
我不知道 JSP 是如何在 运行 时编译的(没有预编译)。当我使用 JDK 时,我的应用程序 运行 正常。但是在 JRE 中 运行ning 时它无法服务 JSP,我得到的错误是:
org.apache.jasper.JasperException: PWC6345: There is an error in invoking javac. A full JDK (not just JRE) is required
at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:92)
at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:378)
at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:119)
at org.apache.jasper.compiler.Jsr199JavaCompiler.compile(Jsr199JavaCompiler.java:208)
at org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:384)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:453)
这清楚地表明 Jetty 正在寻找 Java 编译器,这显然不存在于 JRE 中。查看 Jetty 9.2 文档,我读到:
By default, the Apache JSP container will look for the Eclipse Java Compiler (jdt).
我在类路径中有 jetty-jsp-jdt-2.3.3.jar 但出于某种原因,Jetty 似乎忽略了它。
所以,我的问题是 - 如何在没有 JSP 预编译的情况下设置嵌入式 Jetty,并且能够在 JRE 中 运行。这基本上就是我在 Jetty 6 中的应用程序通过内置的 jasper 编译器所做的事情。 Jetty 9.2 甚至可以吗?
实际上我已经通过简单的操作找到了解决这个问题的方法:
System.setProperty("org.apache.jasper.compiler.disablejsr199", "true");
这使得带有嵌入式 Jetty 9.2 的应用程序 运行 在 JRE 中很愉快。
请参阅 this 以供参考。
正在将基于 Jetty 6 的应用程序迁移到 9.2(嵌入式)。
我不知道 JSP 是如何在 运行 时编译的(没有预编译)。当我使用 JDK 时,我的应用程序 运行 正常。但是在 JRE 中 运行ning 时它无法服务 JSP,我得到的错误是:
org.apache.jasper.JasperException: PWC6345: There is an error in invoking javac. A full JDK (not just JRE) is required
at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:92)
at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:378)
at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:119)
at org.apache.jasper.compiler.Jsr199JavaCompiler.compile(Jsr199JavaCompiler.java:208)
at org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:384)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:453)
这清楚地表明 Jetty 正在寻找 Java 编译器,这显然不存在于 JRE 中。查看 Jetty 9.2 文档,我读到:
By default, the Apache JSP container will look for the Eclipse Java Compiler (jdt).
我在类路径中有 jetty-jsp-jdt-2.3.3.jar 但出于某种原因,Jetty 似乎忽略了它。
所以,我的问题是 - 如何在没有 JSP 预编译的情况下设置嵌入式 Jetty,并且能够在 JRE 中 运行。这基本上就是我在 Jetty 6 中的应用程序通过内置的 jasper 编译器所做的事情。 Jetty 9.2 甚至可以吗?
实际上我已经通过简单的操作找到了解决这个问题的方法:
System.setProperty("org.apache.jasper.compiler.disablejsr199", "true");
这使得带有嵌入式 Jetty 9.2 的应用程序 运行 在 JRE 中很愉快。 请参阅 this 以供参考。