Jersey 您无法找到资源吗?

Jersey 您无法找到资源吗?,jersey,jersey-2.0,Jersey,Jersey 2.0,我已经从Jersey 1.7升级到2.16,Jersey似乎无法找到我的资源(见下面的堆栈)。知道发生了什么事吗?我尝试在扩展ResourceConfig的自定义应用程序类中初始化,但没有成功 2015-02-27 10:48:58,276 WARN main [AbstractLifeCycle]- FAILED Resources: java.lang.NullPointerException java.lang.NullPointerException at org.glass

我已经从Jersey 1.7升级到2.16,Jersey似乎无法找到我的资源(见下面的堆栈)。知道发生了什么事吗?我尝试在扩展ResourceConfig的自定义应用程序类中初始化,但没有成功


2015-02-27 10:48:58,276  WARN main [AbstractLifeCycle]- FAILED Resources: java.lang.NullPointerException
java.lang.NullPointerException
    at org.glassfish.jersey.server.internal.routing.RuntimeModelBuilder.createInflector(RuntimeModelBuilder.java:128)
    at org.glassfish.jersey.server.internal.routing.RuntimeModelBuilder.createMethodRouter(RuntimeModelBuilder.java:115)
    at org.glassfish.jersey.server.internal.routing.RuntimeModelBuilder.createResourceMethodRouters(RuntimeModelBuilder.java:309)
    at org.glassfish.jersey.server.internal.routing.RuntimeModelBuilder.buildModel(RuntimeModelBuilder.java:173)
    at org.glassfish.jersey.server.internal.routing.Routing$Builder.buildStage(Routing.java:196)
    at org.glassfish.jersey.server.ApplicationHandler.initialize(ApplicationHandler.java:532)
    at org.glassfish.jersey.server.ApplicationHandler.access$500(ApplicationHandler.java:166)
    at org.glassfish.jersey.server.ApplicationHandler$3.run(ApplicationHandler.java:327)
    at org.glassfish.jersey.internal.Errors$2.call(Errors.java:289)
    at org.glassfish.jersey.internal.Errors$2.call(Errors.java:286)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
    at org.glassfish.jersey.internal.Errors.processWithException(Errors.java:286)
    at org.glassfish.jersey.server.ApplicationHandler.(ApplicationHandler.java:324)
    at org.glassfish.jersey.servlet.WebComponent.(WebComponent.java:336)
    at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:170)
    at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:388)
    at org.eclipse.jetty.servlet.FilterHolder.doStart(FilterHolder.java:107)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
    at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:716)
    at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:254)
    at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1238)
    at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:683)
    at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:480)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
    at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95)
    at org.eclipse.jetty.server.Server.doStart(Server.java:275)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
    at test.infrastructure.ApplicationHttpServer.start(ApplicationHttpServer.java:50)
    at test.infrastructure.ApplicationHttpServer.start(ApplicationHttpServer.java:33)
    at test.infrastructure.RunJetty.start(RunJetty.java:18)
    at test.infrastructure.RunJetty.main(RunJetty.java:10)
My web.xml

<filter>
        <filter-name>Resources</filter-name>
        <filter-class>org.glassfish.jersey.servlet.ServletContainer</filter-class>
        <init-param>
            <param-name>org.glassfish.jersey.config.server.provider.packages</param-name>
            <param-value>app.web.rest</param-value>
        </init-param>
</filter>

资源
org.glassfish.jersey.servlet.ServletContainer
org.glassfish.jersey.config.server.provider.packages
app.web.rest

您可以扩展应用程序类,也可以直接在web.xml中提供提供者和资源的列表

方法1:使用应用程序类

泽西岛文件:

如果扩展应用程序类以提供相关 根资源类(getResources())和单例 (getSingleton()),即您的JAX-RS应用程序模型,然后需要 要在web应用程序web.xml部署描述符中注册它 使用名为的Servlet或Servlet筛选器初始化参数 javax.ws.rs.Application[sic]的定义如下

  Example 4.11.  Configuring Jersey container Servlet or Filter to use custom Application subclass      
   <init-param>
        <param-name>javax.ws.rs.Application</param-name>
        <param-value>org.foo.MyApplication</param-value>  
  </init-param>
示例4.11。配置Jersey容器Servlet或筛选器以使用自定义应用程序子类
javax.ws.rs.Application
org.foo.MyApplication
方法2:web.xml中的提供者和资源配置

泽西岛文件:

如果没有配置属性 待设置和部署的应用程序仅由资源和 提供程序存储在特定的包中,您可以指示Jersey 扫描这些包并注册找到的任何资源和提供程序 自动:

例4.12。配置要使用的Jersey容器Servlet或筛选器 包扫描

<init-param>
    <param-name>jersey.config.server.provider.packages</param-name>
    <param-value>
        org.foo.myresources,org.bar.otherresources
    </param-value>
</init-param>
<init-param>
    <param-name>jersey.config.server.provider.scanning.recursive</param-name>
    <param-value>false</param-value>
</init-param>

jersey.config.server.provider.packages
org.foo.myresources,org.bar.otherresources
jersey.config.server.provider.scanning.recursive
假的
我的首选是使用应用程序,因为它也可以用于设置其他球衣属性


如果上述设置不起作用,请提供您的应用程序pom.xml和web.xml。

jersey.config.server.provider.packages
是的,我也尝试过,但得到了相同的错误。为了获得更好的帮助,我在Tomcat 8.09下遇到了相同的异常。我想这是因为我不使用Maven,也不知道我需要哪些jar文件。我一直在使用试错法,一次添加一个jar文件,错误会发生变化,这就是我到目前为止所做的。