将基于Jetty 6的应用程序迁移到9.2(嵌入式)。Jetty 9(emedded)运行时JSP编译
我无法弄清楚JSP在运行时是如何编译的(无需预编译)。当我使用JDK时,我的应用程序运行正常。但它不能成为JSP时JRE运行时,我得到的错误是:
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。展望码头9.2文档,我读了:
By default, the Apache JSP container will look for the Eclipse Java Compiler (jdt).
我在classpath 码头,JSP的JDT-2.3.3.jar但由于某些原因,码头似乎忽略它。
所以,我的问题是 - 我如何设置一个没有JSP预编译的嵌入式Jetty,并且能够在JRE中运行。这实际上就是我在Jetty 6中通过内置jasper编译器所做的应用程序。 Jetty 9.2甚至有可能吗?
有一个github项目演示了嵌入JSP的Jetty 9(由Jetty项目维护) - > https://github.com/jetty-project/embedded-jetty-jsp –