我将嵌入式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/