我将嵌入式Jetty与Jersey一起使用以形成REST API。

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

The ResourceConfig instance does not contain any root resource classes


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

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

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

最佳答案

先决条件:请验证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>

关于java - Jersey 资源类未导出,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5007534/

10-11 22:35
查看更多