我有一个简单的Spring& Jersey应用程序,通过简单的资源非常适合消费请求。但是,我想返回一个JSON响应 - 包含一个对象的简单JSON序列化。为实现这一目标,我为jersey-json
添加了maven依赖项。但是,只要我添加此依赖项,就会在服务器启动时收到此错误:
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)
我并不完全清楚提供商究竟是什么,但我很确定应该找到一个默认提供商。
为了完整性,这是我的资源:
@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;
}
}
Scan对象是一个简单的Entity Bean对象。
mvn依赖是:
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-json</artifactId>
<version>1.11</version>
</dependency>
有谁知道我为什么会得到No WebApplication provider is present
例外?关于我如何解决它的任何想法?
由于
答案 0 :(得分:24)
您还需要在类路径上安装jersey-server jar。并且您需要确保所有jar都来自同一版本,否则Jersey运行时将无法使用提供的类。
此外(这里很可能不相关,但是......)模块结构最近发生了变化 - 将servlet依赖项分离到新模块。因此,如果您使用的是servlet,您可能希望依赖于jersey-servlet(这取决于jersey-server)。
答案 1 :(得分:6)
我也有这个问题。这个问题通过为&#34; jersey-json&#34;提供相同的版本来解决。和&#34; jersey-servlet&#34; 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>