6

我的应用程序抛出了下面的错误,尽管我的应用程序中有jackson-core-asl-1.4.2andjackson-mapper-asl-1.4.2

Caused by: java.lang.NoSuchMethodError: org.codehaus.jackson.type.JavaType.<init>(Ljava/lang/Class;)V
    at org.codehaus.jackson.map.type.SimpleType.<init>(SimpleType.java:32)
    at org.codehaus.jackson.map.type.TypeFactory._fromClass(TypeFactory.java:254)
    at org.codehaus.jackson.map.type.TypeFactory._fromType(TypeFactory.java:266)
    at org.codehaus.jackson.map.type.TypeFactory.type(TypeFactory.java:57)
    at org.codehaus.jackson.map.ObjectMapper.<clinit>(ObjectMapper.java:49)
    at org.springframework.web.servlet.view.json.MappingJacksonJsonView.<init>(MappingJacksonJsonView.java:59)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
    at com.google.appengine.tools.development.agent.runtime.Runtime.newInstance_(Runtime.java:126)
    at com.google.appengine.tools.development.agent.runtime.Runtime.newInstance(Runtime.java:134)
    at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:147)
    ... 48 more
.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
    at com.google.appengine.tools.development.agent.runtime.Runtime.newInstance_(Runtime.java:126)
    at com.google.appengine.tools.development.agent.runtime.Runtime.newInstance(Runtime.java:134)
    at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:147)
    ... 48 more

可能是什么原因?应用程序之前工作并将代码提交给 SVN 真的很奇怪,然后当我签出并重新运行所有内容时,我得到了这个错误......

4

2 回答 2

15

这看起来几乎可以肯定是由于 'core' 和 'mapper' jar 的版本不兼容。您可能通过类路径使用了不兼容的版本。

于 2012-08-03T17:43:15.767 回答
7

您遇到的问题是由于 Google App Engine SDK 的更新(我认为是 1.6.1?)。

我遇到了同样的问题,所以我运行了 TattleTale 来查看是否存在一些依赖问题。瞧,org.codehaus.*与以下 2 个库存在冲突:

  • google_sql.jar
  • 杰克逊核心asl-1.6.3.jar

虽然您的杰克逊库与我的略有不同,但问题仍然存在。此问题有 2 个修复:

  • 从 war/webinf/lib 目录中删除 google_sql.jar。这将导致 SDK 验证检查失败,但如果您忽略红色 x,您的代码应该可以正常运行。
  • 将您的 GAE SDK 更新到 1.6.2 或更高版本。我认为他们在后来的 SDK 中解决了这个问题,但更新还引入了一些编译器警告,所以在你跳跃之前先看看。
于 2012-11-11T21:42:05.403 回答