Java 404调用Glassfish上的Jersey 2 REST端点时

Java 404调用Glassfish上的Jersey 2 REST端点时,java,glassfish,jersey,Java,Glassfish,Jersey,这是我的web.xml <servlet> <servlet-name>Simulator HTTP API</servlet-name> <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> <load-on-startup>1</load-on-startup>

这是我的web.xml

<servlet>
        <servlet-name>Simulator HTTP API</servlet-name>
        <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Simulator HTTP API</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>
</web-app>
当我这样称呼它时:

http://localhost:8080/myprojectname/partner/mt
import javax.ws.rs.ApplicationPath;
import org.glassfish.jersey.server.ResourceConfig;

    @ApplicationPath("/test")
    public class YourApplication extends ResourceConfig {
        public YourApplication() {
            this.packages("insert.packagename.where.your.class.is.here");
        }
    }
我发现404错误,我做错了什么

更新 这是我的maven

<dependency>
            <groupId>org.glassfish.jersey.core</groupId>
            <artifactId>jersey-server</artifactId>
            <version>2.22.1</version>
        </dependency>
        <dependency>
            <groupId>org.glassfish.jersey.core</groupId>
            <artifactId>jersey-common</artifactId>
            <version>2.22.1</version>
        </dependency>
        <dependency>
            <groupId>org.glassfish.jersey.core</groupId>
            <artifactId>jersey-client</artifactId>
            <version>2.22.1</version>
        </dependency>
        <dependency>
            <groupId>org.glassfish.jersey.containers</groupId>
            <artifactId>jersey-container-servlet</artifactId>
            <version>2.22.1</version>
        </dependency>

org.glassfish.jersey.core
泽西服务器
2.22.1
org.glassfish.jersey.core
泽西公地
2.22.1
org.glassfish.jersey.core
泽西岛客户
2.22.1
org.glassfish.jersey.containers
jersey容器servlet
2.22.1

在Jersey 2中有不同的部署选项:

如果要通过
web.xml
执行此操作,则必须添加一个
init参数
,其中指定应扫描哪些包:

<servlet>
        <servlet-name>Simulator HTTP API</servlet-name>
        <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
        <init-param>
            <param-name>jersey.config.server.provider.packages</param-name>
            <param-value>insert.packagename.where.your.class.is.here</param-value>
        </init-param>
</servlet>
确保使用
PartnerAPI
类所在的包名更新字符串

然后将
@ApplicationPath
中的值添加到URL中
链接如下所示:


更多信息:

您是否有扩展
ResourceConfig
的类?@unwichtich否,我只有一个类(不扩展任何内容)和一个方法,我向您展示了它u@unwichtich帮帮忙,你是说还要删除web.xml吗?另外,我应该把这个
你的应用程序
类放在哪里?与
PartnerAPI
class在同一软件包中?如果需要,可以删除web.xml。类是否在同一个包中并不重要。只要求该类在同一个项目中。谢谢,你能在这里帮助我吗。就个人而言,我更喜欢使用ResourceConfig,但OP真正缺少的是要扫描的包的init参数。请参见您答案链接中的示例4.7。
import javax.ws.rs.ApplicationPath;
import org.glassfish.jersey.server.ResourceConfig;

    @ApplicationPath("/test")
    public class YourApplication extends ResourceConfig {
        public YourApplication() {
            this.packages("insert.packagename.where.your.class.is.here");
        }
    }