问题:我有一个由Jetty webserver v 7.3提供服务的Web应用程序。我在应用程序中有一个JSP页面。当我在安装了JDK(具有javac)的系统上运行Jetty时,一切正常。我想将此移植到具有JRE(没有javac)的系统。运行Jetty时出现错误。
解决方案:将JSP预编译到Servlet中。生成包含该servlet的应用程序war文件。让Jetty在运行时执行Servlet来代替编译和执行JSP。
我试图使用JSPC ant目标来预编译JSP。但是它正在生成一个空的.java文件。我的目标代码如下。
<jspc srcdir="${web.dir}" destdir="${build.classes.dir}" package="x.y.z" verbose="9" classpathref="project.class.path"> <include name="**/index.jsp"/> </jspc>
请给我一个正确的方法。如果我的方法是正确的,请指出我在配置ant任务时犯的错误。
不要使用ant提供的jspc任务。它已弃用,易碎,并且仅在安装了Tomcat 4(某些版本)的情况下可以使用。
jspc
相反,请安装Tomcat(最适合您所部署的Jetty的JSP / Servlet规范版本),然后通过Tomcat提供的Ant任务调用Jasper编译器。 此处提供了有关Tomcat 5的示例。
请注意,一旦将JSP页面编译为Servlet,就将Servlet编译为类,等等。在Jetty部署环境中,不需要任何“构建环境”。
另请注意,在ant末尾的注释提供了jspc任务。我不知道它是否仍然有用,但是很有趣。