【发布时间】:2016-07-03 14:20:57
【问题描述】:
将基于 Jetty 6 的应用程序迁移到 9.2(嵌入式)。
我无法弄清楚 JSP 在运行时是如何编译的(没有预编译)。当我使用 JDK 时,我的应用程序运行正常。但是在 JRE 中运行时它无法服务 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 正在寻找 JRE 中显然不存在的 Java 编译器。在查看 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 预编译并能够在 JRE 中运行的情况下设置嵌入式 Jetty。这基本上就是我在 Jetty 6 中的应用程序通过内置 jasper 编译器所做的事情。 Jetty 9.2 甚至可以吗?
【问题讨论】:
-
有一个 github 项目演示了嵌入 JSP 的 Jetty 9(由 Jetty 项目维护)-> github.com/jetty-project/embedded-jetty-jsp
标签: jsp jetty embedded-jetty