2014-01-20 58 views
0

我使用的是Jetty 8.0。在我的Java應用程序中創建一個簡單的Web服務器(html/json/png)。JETTY:它的罐子裏面嵌入了JSP

我增加了一個處理程序使用定位在包內的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

我的問題來了,當我跑我的罐子部署。我在getClassLoader行中得到NULL POINTER異常。

我試圖把斜槓放在WEBAPPDIR的末尾,就像在一個StackOverflow文章中提到的一樣,但是,如果我解決了空指針異常,我也無法工作。

回答

0

有我的嵌入式碼頭和jsp兩個問題:

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

2 Eclipse的出口準備的jar:

1 - 缺少代碼中調用我的網頁類以前我用過的提取方法而不是PACKAGE版本,所以在jar裏面找不到jsp。

0

您需要將jsp和html文件的更新代碼放回jar中才能正常工作。 包com.econorma.ui.resources中的本地jsp頁面將僅適用於開發過程以及將項目導出爲war文件時。這些罐子將不會在您在com.econorma.ui.resources的jsp頁面中做出的更改。

因此,您需要從您創建的包中複製jsp或html文件。然後將這些文件放入適當包中的jar文件中並進行更新。

現在,您必須在安裝新的jar文件並重新啓動jetty服務器以查看更改後再次構建項目,並且您應該能夠無誤地運行服務器。希望這可以幫助。

+0

但是有沒有可能jsp頁面裏面有碼頭的罐子? –

+1

也許我必須創建一個配置xml讓Jetty知道正確的jsp文件夾。像這樣的例子:http://www.codeproject.com/Articles/128145/Run-Jetty-Web-Server-Within-Your-Application –