jersey servlet异常tomcat

jersey servlet异常tomcat,tomcat,servlets,jersey,Tomcat,Servlets,Jersey,我发疯了,试图启动一个简单的Jersey-Spring网络应用程序。我在尝试访问web资源时从Tomcat得到的错误是: HTTP Status 500 - type Exception report message description The server encountered an internal error () that prevented it from fulfilling this request. exception javax.servlet.ServletE

我发疯了,试图启动一个简单的Jersey-Spring网络应用程序。我在尝试访问web资源时从Tomcat得到的错误是:

HTTP Status 500 -

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: Servlet.init() for servlet Jersey Spring Web Application threw exception
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
    org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
    org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
    org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    java.lang.Thread.run(Thread.java:619)

root cause

com.sun.jersey.api.container.ContainerException: No WebApplication provider is present
    com.sun.jersey.spi.container.WebApplicationFactory.createWebApplication(WebApplicationFactory.java:69)
    com.sun.jersey.spi.container.servlet.ServletContainer.create(ServletContainer.java:391)
    com.sun.jersey.spi.container.servlet.ServletContainer$InternalWebComponent.create(ServletContainer.java:306)
    com.sun.jersey.spi.container.servlet.WebComponent.load(WebComponent.java:607)
    com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:210)
    com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:373)
    com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:556)
    javax.servlet.GenericServlet.init(GenericServlet.java:212)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
    org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
    org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
    org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    java.lang.Thread.run(Thread.java:619)

note The full stack trace of the root cause is available in the Apache Tomcat/6.0.28 logs.
我的web.xml如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" 
    xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:application-context.xml</param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <listener>
        <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
    </listener>

    <servlet>
        <servlet-name>Jersey Spring Web Application</servlet-name>
        <servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class>

        <init-param>
            <param-name>com.sun.jersey.config.property.packages</param-name>
            <param-value>com.companyname.abc</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>Jersey Spring Web Application</servlet-name>
        <url-pattern>/webresources/*</url-pattern>
    </servlet-mapping>
</web-app>

上下文配置位置
类路径:application-context.xml
org.springframework.web.context.ContextLoaderListener
org.springframework.web.context.request.RequestContextListener
Jersey Spring Web应用程序
com.sun.jersey.spi.spring.container.servlet.SpringServlet
com.sun.jersey.config.property.packages
com.companyname.abc
1.
Jersey Spring Web应用程序
/网络资源/*

你知道我做错了什么吗?

如果你只是想让一个基本的例子起作用,那就不应该发生。也许你有一个损坏的jersey服务器jar。尝试删除现有的,然后下载新的


此错误意味着您的jar缺少META-INF/services/com.sun.jersey.spi.container.WebApplicationProvider文件,它告诉它使用哪个WebApplicationProvider。

我也有同样的问题,经过一些调查和amak的提示,它与hbase依赖性有关,很明显问题是由hbase在我的项目中使用jersey 1.10时导入jersey 1.4引起的。排除HBase拉入的jersey工件后,一切看起来都很好:

    <dependency>
        <groupId>org.apache.hbase</groupId>
        <artifactId>hbase</artifactId>
        <version>0.90.4</version>
        <exclusions>
            <exclusion>
                <artifactId>jersey-core</artifactId>
                <groupId>com.sun.jersey</groupId>
            </exclusion>
            <exclusion>
                <artifactId>jersey-json</artifactId>
                <groupId>com.sun.jersey</groupId>
            </exclusion>
            <exclusion>
                <artifactId>jersey-server</artifactId>
                <groupId>com.sun.jersey</groupId>
            </exclusion>
        </exclusions>
    </dependency>

org.apache.hbase
数据库
0.90.4
球衣核心
泽西岛
泽西json
泽西岛
泽西服务器
泽西岛
希望这对我有帮助

mvn依赖项:树

向我显示使用了另一个版本的jersey server。我包括了1.12版,但在树中出现了

jersey:jersey服务器:jar:1.9-ea07:compile


在修复了这个奇怪的依赖项后,错误消失了。

strangley够了,我发现它是pom文件org.apache.hbase hbase 0.90.3-cdh3u1的以下条目,对我来说也是如此。删除hbase 0.90.4依赖项修复了使用Swagger时出现的类似问题。谢谢@汤姆塔什+1给你。我在谷歌搜索“jersey and springservlet招摇过市”时发现了这个问题,这也是我的问题。@TomTasche and fas对你来说+1这肯定挽救了我的一些脑细胞