有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

未导出java资源类

我使用嵌入式Jetty和Jersey来形成RESTAPI

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

The ResourceConfig instance does not contain any root resource classes

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

由于许可问题,我无法将提取方法用于生产

有人有什么解决办法吗


共 (1) 个答案

  1. # 1 楼答案

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

    解决方案1: 导出jar时,请选中“添加目录条目”复选框(Eclipse)或filesonly=“false”(Ant)。这将添加目录条目,这样当jersey代码访问资源类时,它对它是可见的

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