首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是正确的版本或杰克逊的春天?

什么是正确的版本或杰克逊的春天?
EN

Stack Overflow用户
提问于 2011-01-28 13:37:08
回答 3查看 10.5K关注 0票数 3

我正在使用jackson converter (MappingJacksonHttpMessageConverter)从spring控制器消费和产生json数据。但在调用控制器时抛出以下异常。

代码语言:javascript
复制
Caused by: java.lang.NoSuchMethodError: org.codehaus.jackson.type.JavaType.isConcrete()Z
 at org.codehaus.jackson.map.deser.BeanDeserializerFactory.createBeanDeserializer(BeanDeserializerFactory.java:80)
 at org.codehaus.jackson.map.deser.StdDeserializerProvider._createDeserializer(StdDeserializerProvider.java:266)
 at org.codehaus.jackson.map.deser.StdDeserializerProvider._createAndCacheValueDeserializer(StdDeserializerProvider.java:198)
 at org.codehaus.jackson.map.deser.StdDeserializerProvider.hasValueDeserializerFor(StdDeserializerProvider.java:152)
 at org.codehaus.jackson.map.ObjectMapper.canDeserialize(ObjectMapper.java:829)

我的代码:

Spring bean文件:

代码语言:javascript
复制
     abc.CartType     abc.CartResponseType       

pom文件(仅代码段)

代码语言:javascript
复制
<properties>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <compileSource>1.5</compileSource>
  <org.springframework.version>3.0.2.RELEASE</org.springframework.version>
  <jboss.server.name>network-epro</jboss.server.name>
 </properties>


  <dependency>
   <groupId>org.springframework</groupId>
   <artifactId>spring-core</artifactId>
   <version>${org.springframework.version}</version>
  </dependency>
  <dependency>
   <groupId>org.springframework</groupId>
   <artifactId>spring-beans</artifactId>
   <version>${org.springframework.version}</version>
  </dependency>
  <dependency>
   <groupId>org.springframework</groupId>
   <artifactId>spring-context</artifactId>
   <version>${org.springframework.version}</version>
  </dependency>
  <dependency>
   <groupId>org.springframework</groupId>
   <artifactId>spring-web</artifactId>
   <version>${org.springframework.version}</version>
  </dependency>
  <dependency>
   <groupId>org.springframework</groupId>
   <artifactId>spring-webmvc</artifactId>
   <version>${org.springframework.version}</version>
  </dependency>
  <dependency>
   <groupId>org.springframework</groupId>
   <artifactId>spring-test</artifactId>
   <version>${org.springframework.version}</version>
   <scope>test</scope>
  </dependency>
  <dependency>
   <groupId>javax.servlet</groupId>
   <artifactId>servlet-api</artifactId>
   <version>2.4</version>
   <scope>provided</scope>
  </dependency>
  <dependency>
   <groupId>javax.servlet.jsp</groupId>
   <artifactId>jsp-api</artifactId>
   <version>2.1</version>
   <scope>provided</scope>
  </dependency>
  <dependency>
   <groupId>taglibs</groupId>
   <artifactId>standard</artifactId>
   <version>1.1.2</version>
  </dependency>
  <dependency>
   <groupId>jstl</groupId>
   <artifactId>jstl</artifactId>
   <version>1.1.2</version>
  </dependency>
  <dependency>
   <groupId>org.apache.tiles</groupId>
   <artifactId>tiles-api</artifactId>
   <version>2.1.4</version>
  </dependency>
  <dependency>
   <groupId>org.apache.tiles</groupId>
   <artifactId>tiles-core</artifactId>
   <version>2.1.4</version>
  </dependency>
  <dependency>
   <groupId>org.apache.tiles</groupId>
   <artifactId>tiles-jsp</artifactId>
   <version>2.1.4</version>
  </dependency>
  <dependency>
   <groupId>commons-lang</groupId>
   <artifactId>commons-lang</artifactId>
   <version>2.2</version>
  </dependency>
  <dependency>
   <groupId>commons-logging</groupId>
   <artifactId>commons-logging</artifactId>
   <version>1.1.1</version>
  </dependency>
  <dependency>
   <groupId>commons-collections</groupId>
   <artifactId>commons-collections</artifactId>
   <version>3.2</version>
  </dependency>
  <dependency>
   <groupId>sso</groupId>
   <artifactId>casclient</artifactId>
   <version>2.2.1</version>
  </dependency>
  <dependency>
   <groupId>com.sun.jersey</groupId>
   <artifactId>jersey-client</artifactId>
   <version>1.1.5.1</version>
  </dependency>
  <dependency>
   <groupId>commons-codec</groupId>
   <artifactId>commons-codec</artifactId>
   <version>1.3</version>
  </dependency>
  <dependency>
   <groupId>com.sun.xml.bind</groupId>
   <artifactId>jaxb-impl</artifactId>
   <version>2.2</version>
  </dependency>
  <dependency>
   <groupId>log4j</groupId>
   <artifactId>log4j</artifactId>
   <version>1.2.15</version>
   <exclusions>
    <exclusion>
     <groupId>com.sun.jdmk</groupId>
     <artifactId>jmxtools</artifactId>
    </exclusion>
    <exclusion>
     <groupId>com.sun.jmx</groupId>
     <artifactId>jmxri</artifactId>
    </exclusion>
    <exclusion>
     <groupId>javax.jms</groupId>
     <artifactId>jms</artifactId>
    </exclusion>
    <exclusion>
     <groupId>commons-logging</groupId>
     <artifactId>commons-logging</artifactId>
    </exclusion>
   </exclusions>
  </dependency>
  <dependency>
   <groupId>junit</groupId>
   <artifactId>junit</artifactId>
   <version>4.5</version>
   <scope>test</scope>
  </dependency>
  <dependency>
   <groupId>net.sf.json-lib</groupId>
   <artifactId>json-lib-ext-spring</artifactId>
   <version>1.0.2</version>
  </dependency>

  <dependency>
    <groupId>xpp</groupId>
    <artifactId>xpp</artifactId>
    <version>2.3.0</version>
  </dependency>

  <!-- http://code.google.com/p/jsonp-java/ -->
  <dependency>
   <groupId>org.jsonp</groupId>
   <artifactId>jsonp</artifactId>
   <version>1.0.1</version>
  </dependency>
  <dependency>
   <groupId>email</groupId>
   <artifactId>email-client</artifactId>
   <version>2.0.0</version>
   <scope>provided</scope>
  </dependency>
    <dependency>
        <groupId>velocity</groupId>
        <artifactId>velocity</artifactId>
        <version>1.4</version>
    </dependency>
  <dependency>
   <groupId>cglib</groupId>
   <artifactId>cglib</artifactId>
   <version>2.2</version>
   <type>jar</type>
   <scope>compile</scope>
  </dependency>
  <dependency>
   <groupId>org.hibernate</groupId>
   <artifactId>hibernate</artifactId>
   <version>3.2.2.ga</version>
   <type>jar</type>
   <scope>compile</scope>
  </dependency>
  <!--  
   Jboss client dependancy. 
   -->
  <dependency>
   <groupId>jboss</groupId>
   <artifactId>jbossall-client</artifactId>
   <version>4.2.2.GA</version>
   <scope>provided</scope>
  </dependency>
  <dependency>
      <groupId>org.codehaus.jackson</groupId>
   <artifactId>jackson-mapper-asl</artifactId>
   <version>1.4.2</version>
  </dependency>
  <dependency>
      <groupId>org.springframework.ws</groupId>
      <artifactId>spring-oxm-tiger</artifactId>
      <version>1.5.9</version>
  </dependency>

我可以看到在spring-web pom文件中,jackson版本被提到为1.4.2,我仍然使用它,它抛出了关于找不到方法的异常。我使用的是正确的版本吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-01-30 21:51:35

我找到问题了。

使用雅克森1.4.2版应该不会有问题,正如StaxMan建议的那样,核心对于映射器来说是可靠的,因此它将被自动解决,不需要显式声明它。

现在回到问题上来。这是jboss中的类路径问题。我在同一台服务器上部署了两个web应用程序,一个依赖于jacson版本1.1.1,另一个依赖于1.4.2。我还没有解决方案,所以我发布了另一个与Jboss相关的question

票数 1
EN

Stack Overflow用户

发布于 2011-01-28 16:14:47

您似乎缺少jackson-core依赖项。和jackson-mapper一样,你也需要它。

1.4.x版本应该没问题,不过升级到更新的版本应该没什么坏处。

票数 1
EN

Stack Overflow用户

发布于 2011-01-29 03:33:36

我认为Jackson core和mapper jar之间有不同的版本(前者具有流解析器/生成器;后者具有数据绑定)。很难确保传递依赖项具有兼容的版本--虽然多个Jackson版本在Spring (和大多数其他框架)中都可以很好地工作,但mapper和core的版本有更严格的依赖项。

具体地说:核心的版本不应该比映射器的版本旧太多,因为较新的映射器版本依赖于核心中的新功能。相反的影响较小;因此通常情况下,拥有较旧的映射器版本,较新的核心(核心在这一点上的变化速度也要慢得多)是可以接受的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4825201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档