首页 > 解决方案 > 如何让 Jersey 框架扫描外部 jars 中定义的资源?

问题描述

我想使用 Jersey Framework 2.33 来使用 rest api。我的 web.xml 就像:

<!-- Added By Habil Harati -->
    <servlet>
        <servlet-name>RestWebServiceServlet</servlet-name>
        <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
        <init-param>
            <param-name>jersey.config.server.provider.packages</param-name>
            <param-value>org.dpdouran.restapi</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>RestWebServiceServlet</servlet-name>
        <url-pattern>/xforce/restapiservice/*</url-pattern>
    </servlet-mapping>
    <!-- End Habil Harati -->

我在另一个项目中定义“org.dpdouran.restapi”并将该项目添加到该项目的类路径中,然后我将这样的类添加到该包中

package org.dpdouran.restapi;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

@Path("apireader")
public class ApiDataReader {

    @GET
    @Path("get")
    @Produces(MediaType.TEXT_PLAIN)
    public String getIt() {
        return "Got it!";
    }
}

问题是,当我将包“org.dpdouran.restapi”添加到主项目时,它可以正常工作,但是当我剪切包并将其粘贴到另一个项目中,然后将该项目作为依赖项添加到类路径中时,它不起作用。请帮我解决这个问题。我不能把那个包放在我的主项目中。我一定会使用类路径和eclipse,我不能使用maven。

标签: javaeclipsejax-rsjax-ws

解决方案


我偶然发现了这个问题。我在我的主项目中创建了包,其中没有任何类,然后我在另一个项目中创建了相同的包,并将所有类都放在那里。现在 Jersey 框架可以扫描这些类并理解注释。


推荐阅读