JETTY:嵌入式JSP在其jar中

时间:2014-01-20 16:20:34

标签: java eclipse jsp jetty

我正在使用Jetty 8.0。在我的java应用程序中创建一个简单的Web服务器(html / json / png)。

我添加了一个处理程序来使用位于包中的jsp页面(如下所述:http://docs.codehaus.org/display/JETTY/Embedding+Jetty):

        String WEBAPPDIR = "com/econorma/jsp/resources";
        String CONTEXTPATH = "/jsp";

        URL warUrl = WebApplication.class.getClassLoader().getResource(WEBAPPDIR);
        final String warUrlString = warUrl.toExternalForm();
        WebAppContext webapp = new WebAppContext(warUrlString, CONTEXTPATH);

我在Eclipse中测试了这段代码没有任何问题:html和jsp都有效。

enter image description here

当我运行我的jar部署时,我的问题来了。我在getClassLoader行中得到NULL POINTER异常。

我尝试将斜杠放在WEBAPPDIR的末尾,如一个StackOverflow帖子中所提到的那样,但是,如果我解决了空指针异常,我也不能对它起作用。

2 个答案:

答案 0 :(得分:0)

您需要将更新后的jsp和html文件代码放回到jar中才能正常工作。 包com.econorma.ui.resources中的本地jsp页面仅在开发过程中以及将项目导出为war文件时可用。这些罐子不会在com.econorma.ui.resources中的jsp页面中进行更改。

因此您需要从您创建的包中复制jsp或html文件。然后将这些文件放在相应包中的jar中并更新它。

现在,您必须在安装新的jar文件后重新构建项目并重新启动jetty服务器以查看更改,您应该能够无错误地运行服务器。希望这会有所帮助。

答案 1 :(得分:0)

我的嵌入式jetty和jsp存在两个问题:

在调用我的webClass之前缺少代码:

System.setProperty("org.apache.jasper.compiler.disablejsr199", "true"); 

2-Eclipse导出以准备jar:我使用了EXTRACT方法而不是PACKAGE方法,因此无法在jar中找到jsp。