使用 Spring 3.1.2 从 Jackson 1.9 升级到 2.5 的问题 - ProviderBase class 未找到
Issue upgrading from Jackson 1.9 to 2.5 using Spring 3.1.2 - ProviderBase class not found
我正在尝试将当前项目从 Jackson 1.9 升级到 2.5。一切都很顺利,直到我尝试启动我的 WAS 7 服务器并收到此错误:
org.springframework.beans.factory.CannotLoadBeanClassException: Error
loading class
[com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider] for bean
with name 'jaxbProvider' defined in ServletContext resource
[/WEB-INF/spring/applicationContext-configuration.xml]: problem with
class file or dependent class; nested exception is
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" />
我的 class 路径上有以下 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
但是找不到。 google 搜索显示 class 属于
jackson-jaxrs-provider 项目,但我找不到具体的 jar。我认为那是因为那只是我已经包含的 jackson-jaxrs-json-provider.2.5.0.jar 的基础。所以它本身不应该能够通过 jackson-jaxrs-json-provider.2.5.0.jar??
看到那个 base class
如果有人知道哪里出了问题,我将不胜感激!
谢谢。
如果您使用 Maven,添加 jackson-jaxrs-json-provider
作为依赖项,您将看到以下所有内容被拉入
(我有一张来自另一个 post 的图像,带有 v2.2.3-忽略版本)
如您所见, 依赖于 jackson-jaxrs-base
,也就是 ProviderBase
所在的位置。
您可以下载它here(只需单击2.5.0,然后下载包)
我正在尝试将当前项目从 Jackson 1.9 升级到 2.5。一切都很顺利,直到我尝试启动我的 WAS 7 服务器并收到此错误:
org.springframework.beans.factory.CannotLoadBeanClassException: Error loading class [com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider] for bean with name 'jaxbProvider' defined in ServletContext resource [/WEB-INF/spring/applicationContext-configuration.xml]: problem with class file or dependent class; nested exception is 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" />
我的 class 路径上有以下 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
但是找不到。 google 搜索显示 class 属于
jackson-jaxrs-provider 项目,但我找不到具体的 jar。我认为那是因为那只是我已经包含的 jackson-jaxrs-json-provider.2.5.0.jar 的基础。所以它本身不应该能够通过 jackson-jaxrs-json-provider.2.5.0.jar??
看到那个 base class如果有人知道哪里出了问题,我将不胜感激!
谢谢。
如果您使用 Maven,添加 jackson-jaxrs-json-provider
作为依赖项,您将看到以下所有内容被拉入
(我有一张来自另一个 post 的图像,带有 v2.2.3-忽略版本)
如您所见, 依赖于 jackson-jaxrs-base
,也就是 ProviderBase
所在的位置。
您可以下载它here(只需单击2.5.0,然后下载包)