2011-02-15 113 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>