2011-02-15 96 views
1

我使用嵌入式Jetty與澤西島形成REST API。Jersey資源類不被導出

當我使用了Runnable JAR嚮導,如果我選擇「包所需的庫到生成JAR」,當我運行的JAR,我得到的錯誤

The ResourceConfig instance does not contain any root resource classes 

如果我選擇Eclipse導出「需要提取庫生成JAR「,我得到沒有錯誤,並檢測到所有資源類。

由於授權問題,我無法使用Extract方法進行生產。

任何人有任何修復或解決方法?

回答

0

先決條件:請驗證web.xml中的軟件包名稱以及代碼中存在資源的軟件包名稱。如果兩者都相同,則遵循以下解決方案:

解決方案1: 輸出jar時請檢查「添加目錄條目」複選框(Eclipse)或filesonly =「false」(Ant)。這將添加目錄條目,以便當澤西島代碼訪問資源類時可以看到它。

解決方案2: 您也可以指定類名稱。只指定包名無效,但是當我指定如下時,它對我有用。

<servlet> 
    <servlet-name>##SERVLETNAME##</servlet-name> 
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> 
    <init-param> 
     <param-name>com.sun.jersey.config.property.packages</param-name> 
     <param-value>##PACKAGENAME##</param-value> 
    </init-param> 
    <init-param> 
     <param-name>com.sun.jersey.config.property.resourceConfigClass</param-name>    
     <param-value>com.sun.jersey.api.core.ClassNamesResourceConfig</param-value> 
    </init-param> 
    <init-param> 
     <param-name>com.sun.jersey.config.property.classnames</param-name> 
     <param-value> 
     ##CLASSNAME1##,##CLASSNAME2## 
     </param-value> 
    </init-param> 
<load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>##SERVLETNAME##</servlet-name> 
    <url-pattern>/##SERVLETURL##/*</url-pattern> 
</servlet-mapping>