泽西岛资源类未被导出

时间:2011-02-15 18:02:24

标签: java eclipse jar jetty jersey

我正在使用嵌入式Jetty和Jersey来组成REST API。

当我使用Runnable JAR向导从Eclipse导出时,如果我选择“将所需的库打包到生成的JAR中”,那么当我运行JAR时,我会收到错误

The ResourceConfig instance does not contain any root resource classes

如果我选择“将所需库提取到生成的JAR中”,则不会收到任何错误,并且会检测到所有资源类。

由于许可问题,我无法使用Extract方法进行生产。

任何人都有任何修复或解决方法吗?

1 个答案:

答案 0 :(得分:0)

先决条件:请验证web.xml中的软件包名称以及代码中资源所在的软件包名称。如果两者相同,请遵循以下解决方案:

解决方案1: 在导出jar时,请检查"添加目录条目"复选框(Eclipse)或filesonly =" false" (蚂蚁)。这将添加目录条目,以便当泽西代码访问资源类时,它对它是可见的。

解决方案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>