【问题标题】:Issue upgrading from Jackson 1.9 to 2.5 using Spring 3.1.2 - ProviderBase class not found使用 Spring 3.1.2 从 Jackson 1.9 升级到 2.5 的问题 - 找不到 ProviderBase 类
【发布时间】:2015-06-20 15:16:08
【问题描述】:

我正在尝试将当前项目从 Jackson 1.9 升级到 2.5。一切都很顺利,直到我尝试启动我的 WAS 7 服务器并收到此错误:

org.springframework.beans.factory.CannotLoadBeanClassException: 错误 加载类 [com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider] 用于 bean 在 ServletContext 资源中定义了名称“jaxbProvider” [/WEB-INF/spring/applicationContext-configuration.xml]:问题 类文件或依赖类;嵌套异常是 java.lang.NoClassDefFoundError: com.fasterxml.jackson.jaxrs.base.ProviderBase

这似乎与尝试在我的 web.xml 中注册 Jackson Provider 有关:

<!-- Jackson Provider -->
<bean id="jaxbProvider" class="com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider" >
    <property name="mapper" ref="jacksonObjectMapper"/>
</bean>

<bean id="jacksonObjectMapper" class="com.fasterxml.jackson.databind.ObjectMapper" >
    <property name="annotationIntrospector" ref="jacksonAnnotationIntrospector"></property>
</bean>

<bean id="jacksonAnnotationIntrospector" class="com.fasterxml.jackson.databind.introspect.AnnotationIntrospectorPair" >
    <constructor-arg ref="primaryAnnotationIntrospector" />
    <constructor-arg ref="secondaryAnnotationIntrospector" />
</bean>

<bean id="primaryAnnotationIntrospector" class="com.fasterxml.jackson.module.jaxb.JaxbAnnotationIntrospector" />
<bean id="secondaryAnnotationIntrospector" class="com.fasterxml.jackson.databind.introspect.JacksonAnnotationIntrospector" />

我的类路径中有以下 jar:

jackson-annotations-2.5.0.jar
jackson-core-2.5.0.jar
jackson-databind-2.5.0.jar
jackson-jaxrs-json-provider-2.5.0.jar
jackson-module-jaxb-annotations.2.5.0.jar

现在据我了解它正在寻找这个家伙:

com.fasterxml.jackson.jaxrs.base.ProviderBase

但找不到。谷歌搜索显示该类属于

jackson-jaxrs-provider 项目,但我找不到特定的 jar。我认为那是因为这只是我已经包含的 jackson-jaxrs-json-provider.2.5.0.jar 的基础。那么它不应该天生就能够通过jackson-jaxrs-json-provider.2.5.0.jar看到那个基类吗??

如果有人知道可能出了什么问题,我将不胜感激!

谢谢。

【问题讨论】:

    标签: json spring dependencies jackson jax-rs


    【解决方案1】:

    如果你使用 Maven,添加 jackson-jaxrs-json-provider 作为依赖项,你会看到以下所有内容被拉入

    (我有一张来自另一个 v2.2.3 帖子的图片-忽略版本)

    如您所见,它确实依赖于jackson-jaxrs-base,这是ProviderBase 所在的位置。

    您可以在here 下载它(只需点击2.5.0,然后点击Download Bundle

    【讨论】:

    • 感谢peeskillet的详细解释。这解决了我的问题。首先,我没有使用 Maven(我希望可以,但我的组织不允许),所以我错过了 jackson-jaxrs-base 依赖项。其次,我认为依赖是在 jackson-jaxrs-providers (here) 上,这是错误的。感谢您消除我的困惑。我在启动时不再出现java.lang.NoClassDefFoundError: com.fasterxml.jackson.jaxrs.base.ProviderBase 错误!
    猜你喜欢
    • 2014-02-21
    • 2021-08-13
    • 1970-01-01
    • 2020-09-09
    • 2013-02-22
    • 1970-01-01
    • 1970-01-01
    • 2016-09-20
    • 2014-03-01
    相关资源
    最近更新 更多