泽西没有WebApplication提供商在添加jersey-*依赖时出现

idb*_*ley 11 spring json jersey

我有一个简单的Spring&Jersey应用程序,它非常适合通过简单的资源消费请求.但是,我想返回一个JSON响应 - 包含一个对象的简单JSON序列化.为此,我添加了一个maven依赖项jersey-json.但是,只要我添加此依赖项,我就会在服务器启动时收到此错误:

com.sun.jersey.api.container.ContainerException: No WebApplication provider is present  at      
     com.sun.jersey.spi.container.WebApplicationFactory.createWebApplication(WebApplicationFactory.java:69) at
     com.sun.jersey.spi.container.servlet.ServletContainer.create(ServletContainer.java:391)
Run Code Online (Sandbox Code Playgroud)

我并不完全清楚提供商到底是什么,但我很确定应该找到一个默认提供商.

为了完整性,这是我的资源:

@Path("/scan")
@Resource
@Component
public class ScanResource {
    @GET
    @Produces(MediaType.APPLICATION_JSON)
    @Path("/{barcode}")
    public List<Scan> getScansForBarcode(@PathParam("barcode") Long barcode){
        ..snip..
        return results;
    }
}
Run Code Online (Sandbox Code Playgroud)

Scan对象是一个简单的Entity Bean对象.

mvn依赖是:

<dependency>
    <groupId>com.sun.jersey</groupId>
    <artifactId>jersey-json</artifactId>
    <version>1.11</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么我会得到No WebApplication provider is present例外?有关如何解决它的任何想法?

谢谢

Pav*_*cek 24

您还需要在类路径上安装jersey-server jar.并且您需要确保所有jar都来自同一版本,否则Jersey运行时将无法使用提供的类.

另外(这里很可能不相关,但是......)最近模块结构发生了变化 - 将servlet依赖项分离到新模块.因此,如果您正在使用servlet,您可能希望依赖于jersey-servlet(这取决于jersey-server).

  • 谢谢!我有嵌入式neo4j服务器,当我添加一个包含json客户端的依赖项时,它崩溃了.例如 - http://lists.neo4j.org/pipermail/user/2011-November/013368.html (2认同)

小智 6

我也有这个问题.通过为"jersey-json"和"jersey-servlet"maven依赖项提供相同版本来解决该问题.

EX:

<dependency>
    <groupId>com.sun.jersey</groupId>
    <artifactId>jersey-json</artifactId>
    <version>1.13</version>
</dependency>
<dependency>
    <groupId>com.sun.jersey</groupId>
    <artifactId>jersey-servlet</artifactId>
    <version>1.13</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)