【问题标题】:Jersey in Tomcat+Spring environment can't find ComponentProvider. Why?Tomcat+Spring 环境下的 Jersey 找不到 ComponentProvider。为什么?
【发布时间】:2010-10-20 10:46:29
【问题描述】:

我已经在 Tomcat 上部署了 Jersey,并且一切正常(当我使用 com.sun.jersey.spi.container.servlet.ServletContainer 时),但是一旦我将其更改为 com.sun.jersey.spi .spring.container.servlet.SpringServlet (根据我能找到的所有教程),我得到一个讨厌的异常:

Apr 19, 2009 5:07:35 PM org.apache.catalina.core.ApplicationContext log
INFO: Marking servlet ServletAdaptor as unavailable
Apr 19, 2009 5:07:35 PM org.apache.catalina.core.StandardContext loadOnStartup
SEVERE: Servlet /myservice threw load() exception
java.lang.ClassNotFoundException: com.sun.jersey.spi.service.ComponentProvider

知道它可以驻留在什么包/发行版中吗?我错过了什么?

可能我根本不需要它。我试图确保当我的资​​源类被加载时,它将被自动装配并使用它所依赖的其余 Bean 进行初始化。可以换一种方式吗?

谢谢。

【问题讨论】:

    标签: java spring tomcat jersey


    【解决方案1】:

    com.sun.jersey.spi.service.ComponentProvider 接口是 jersey-core JAR 的一部分,因此您遇到该异常很奇怪。

    确保一起使用相同版本的 jersey 库(即,您使用的是 Jersey 1.0.1 库,而不是混合使用 1.0 和 1.0.1,因为 Spring 类在这两个版本之间被重命名)。

    还要确保您的 web.xml 中有一个 ContextLoaderListener,如下所示:

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    

    【讨论】:

    • 我已经删除了所有有冲突的版本 JAR 并且只从 1.0.3 中读取 - 异常消失了。我的 JSON 功能也被减少到最低限度,但我想这是一个单独的问题。
    • JSON 支持最近在泽西岛发生了变化。确保您已配置为使用 Jackson 来支持 JSON 并拥有所需的库。
    • 更令人困惑的是,如果您查看 com/sun/jersey 中的 Jersey Maven 存储库,则在 1.0 中有一个 Spring jar,但是您需要在 com/sun/jersey/contribs 下查看匹配版本(例如,在我的情况下,所有 jar 的 1.5 - Core、Server 和 Spring)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-15
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    相关资源
    最近更新 更多