泽西岛:没有WebApplication提供商

时间:2013-06-24 23:37:35

标签: tomcat jersey

我按照http://www.ibm.com/developerworks/library/wa-aj-tomcat/中的确切步骤操作,我正确地包括了所有的罐子(我相信)。我仍然遇到如下错误:

Jun 24, 2013 7:16:21 PM com.sun.jersey.api.core.ScanningResourceConfig init
INFO: No provider classes found.
Jun 24, 2013 7:16:21 PM org.apache.catalina.core.ApplicationContext log
SEVERE: StandardWrapper.Throwable
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:360)
    at com.sun.jersey.spi.container.servlet.ServletContainer$InternalWebComponent.create(ServletContainer.java:275)
    at com.sun.jersey.spi.container.servlet.WebComponent.load(WebComponent.java:585)
    at com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:213)
    at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:342)
    at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:516)
    at javax.servlet.GenericServlet.init(GenericServlet.java:160)
    at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1280)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1193)
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1088)
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5123)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5407)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

Jun 24, 2013 7:16:21 PM org.apache.catalina.core.StandardContext loadOnStartup
SEVERE: Servlet /Jersey threw load() exception
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:360)
    at com.sun.jersey.spi.container.servlet.ServletContainer$InternalWebComponent.create(ServletContainer.java:275)
    at com.sun.jersey.spi.container.servlet.WebComponent.load(WebComponent.java:585)
    at com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:213)
    at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:342)
    at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:516)
    at javax.servlet.GenericServlet.init(GenericServlet.java:160)
    at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1280)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1193)
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1088)
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5123)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5407)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

我刚做了第一步,打招呼。我的web.xml和java文件如下:

package sample.hello.resources;

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


@Path("/hello")
public class HelloResource {
    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String sayHello() {
        return "Hello Jersey";
    }
} 

的web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>Jersey</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
  </welcome-file-list>

  <servlet>
    <servlet-name>Jersey REST Service</servlet-name>
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
    <init-param>
      <param-name>com.sun.jersey.config.property.packages</param-name>
      <param-value>sample.hello.resources</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>Jersey REST Service</servlet-name>
    <url-pattern>/rest/*</url-pattern>
  </servlet-mapping>

</web-app>

我一直在谷歌搜索,我找不到一个好的解决方案。 顺便说一句,我的jar文件列表是: 的activation.jar ASM-3.1.jar com.sun.jersey.jersey服务器-1.4.0.jar JAXB的API-2.2.5.jar JAXB的IMPL-2.2_1.jar 球衣-client.jar中 球衣-core.jar添加 新泽西州JSON-1.7.jar 新泽西州弹簧1.11 b02.jar JSR311,api.1.1.1.jar STAX-api.jar文件 wstx-asl.jar

这些罐子在网上推荐。我将它们直接复制到WEB-INF / lib文件夹。我担心的一件事是路径问题,有人在我之前告诉我,我应该通过右键单击类项目 - > gt;构建路径然后添加jar来添加一些罐子。我也尝试过,不是好消息。我正在运行Tomcat7.0。网络也会运行到错误报告页面。请帮忙!

我尝试了两个本地主机链接:8080 / Jersey / WEB-INF / web.xml&amp; 8080 /新泽西/ REST /你好。都失败了!

提前致谢。

3 个答案:

答案 0 :(得分:4)

我怀疑这可能与StackOverflow上的另一个问题重复。 Jersey No WebApplication provider is present when jersey-json dependency added

最后,确保jersey-server是对类路径的依赖。 当你说“你的jar文件列表”时,你确定这些jar是在web应用程序的类路径中吗?它可能是IDE的构建路径的一个功能,导致您的问题。

如果仍有问题,请包括您使用的IDE以及类路径的配置方式。

答案 1 :(得分:1)

我在2个不同的poms中有2个不同的Jersey版本,其中一个依赖于其他。解决这个问题解决了这个问题。

答案 2 :(得分:0)

通过在POM中添加所有jersy模块的相同版本来解决此问题。最初我遇到了这个问题,因为在POM中我给了核心1.19.3和Servlet为19.3。后来改变了所有必需的jersy罐到同一版本1.19解决了这个问题。