我正在使用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都有效。
当我运行我的jar部署时,我的问题来了。我在getClassLoader行中得到NULL POINTER异常。
我尝试将斜杠放在WEBAPPDIR的末尾,如一个StackOverflow帖子中所提到的那样,但是,如果我解决了空指针异常,我也不能对它起作用。
答案 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。