Jackson NoSuchMethodError需要PropertyPropertyOrdering在运行时与谷歌应用程序引擎项目maven [英] Jackson NoSuchMethodError requiresPropertyOrdering maven with google app engine project at runtime

查看:190
本文介绍了Jackson NoSuchMethodError需要PropertyPropertyOrdering在运行时与谷歌应用程序引擎项目maven的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图让一个应用引擎maven项目运行并且似乎发现自己在JAR地狱中。这个项目过去没有使用maven就已经建立并运行了,但是我已经接受了Eclipse的废话,并且试图通过所有常见的原因来简化该项目。

目前所有的工作正在编译和测试通过(来自 myproject-war 目录的 mvn clean install 此处显示)。我也可以从我的 myproject-ear 目录中启动 mvn appengine:devserver 并让服务器运行。然而,导航到我的一个servlet中,我得到了下面显示的 noSuchMethodError 跟踪。 (为便于阅读,所有代码都在底部)。



这看起来类似于,其中杰克逊版本不同步。然而,我的杰克逊版本似乎没问题,正如我的 pom.xml 中也可以看到的那样,它也位于底部。看来,该方法直到杰克逊3.0才出现由于 mvn dependency:tree -Dverbose |的输出,似乎可以ack jackson 以及我依赖于 2.4.1



我能想到的最可能的罪魁祸首是谷歌图书馆,我正在使用,因为我遵循这里的例子似乎依赖于它。然而,我不确定如何去测试这个假设,或者让Google库在没有依赖的情况下工作。也许是< exlcudes> 标记,但我不知道如何应用它。

有人有任何建议或我错过的东西吗?我如何获得在运行时使用的类的正确版本?或者我错过了一些东西,解决方案完全不同?



编辑:请注意,根据评论/我负责使用的所有库都使用相同版本的fasterxml / Jackson,而不是旧的codehaus packaing。我同意看起来在某个地方仍然存在一个较老的依赖项导致问题,但这正是我正在努力纠正的问题。

编辑2 strong>:当我清理整个项目和依赖关系结构时,我最终得到了这个工作,尽管我无法提供确切的解决方法。我认为这个问题是由于这种依赖:

 < dependency> 
< groupId> com.fasterxml.jackson.jaxrs< / groupId>
< artifactId> jackson-jaxrs-json-provider< / artifactId>
< version> 2.4.1< / version>
< /依赖关系>

org.jboss.resteasy:resteasy-jackson2-provider:3.0有依赖关系。 6.Final ,它本身取决于 com.fasterxml.jackson.core:jackson-databind:2.2.1 ,它没有缺少的方法,正如我指出的在我原来的帖子。



mvn依赖:树 - 混淆| ack jackson

  [信息] +  -  com.fasterxml.jackson.jaxrs:jackson-jaxrs -json-provider:jar:2.4.1:编译
[INFO] | + - com.fasterxml.jackson.jaxrs:jackson-jaxrs-base:jar:2.4.1:compile
[INFO] | | + - (com.fasterxml.jackson.core:jackson-core:jar:2.4.1:compile - 重复时省略)
[INFO] | | \-(com.fasterxml.jackson.core:jackson-databind:jar:2.4.1:compile - 重复时省略)
[INFO] | + - (com.fasterxml.jackson.core:jackson-core:jar:2.4.1:compile - 重复时省略)
[INFO] | + - (com.fasterxml.jackson.core:jackson-databind:jar:2.4.1:compile - 重复时省略)
[INFO] | \- com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.4.1:compile
[INFO] | + - (com.fasterxml.jackson.core:jackson-core:jar:2.4.1:compile - 重复时省略)
[INFO] | \-(com.fasterxml.jackson.core:jackson-databind:jar:2.4.1:compile - 重复时省略)
[INFO] + - com.fasterxml.jackson.core:jackson-core:jar :2.4.1:编译
[INFO] + - com.fasterxml.jackson.core:jackson-databind:jar:2.4.1:compile
[INFO] | + - com.fasterxml.jackson.core:jackson-annotations:jar:2.4.0:compile
[INFO] | \-(com.fasterxml.jackson.core:jackson-core:jar:2.4.1:compile - 重复时省略)
[INFO] | + - com.google.http-client:google-http-client-jackson2:jar:1.19.0:compile
[INFO] | | \-(com.fasterxml.jackson.core:jackson-core:jar:2.1.3:compile - 与2.4.1冲突时省略)
[信息] + - org.codehaus.jackson:jackson-mapper -asl:jar:1.9.13:test
[INFO] | \- org.codehaus.jackson:jackson-core-asl:jar:1.9.13:test

异常跟踪:

  java.lang.NoSuchMethodError:com.fasterxml.jackson.core.JsonFactory.requiresPropertyOrdering()Z 
。在com.fasterxml.jackson.databind.ObjectMapper<初始化>(ObjectMapper.java:458)
。在com.fasterxml.jackson.databind.ObjectMapper< INIT>(ObjectMapper.java:379)在com.fasterxml.jackson.jaxrs.json.JsonMapperConfigurator.getDefaultMapper(JsonMapperConfigurator.java:44)

在com.fasterxml.jackson.jaxrs.base.ProviderBase.locateMapper(ProviderBase.java:856)在com.fasterxml.jackson.jaxrs.base.ProviderBase.writeTo(ProviderBase.java:588)

在org.jboss.resteasy.core.interception.AbstractWriterInterceptorContext.writeTo(AbstractWriterInterceptorContext.java:129)
at org.jboss.resteasy.core.interception.ServerWriterInterceptorContext.writeTo(ServerWriterInterceptorContext.java:62)
at org.jbo ss.resteasy.core.interception.AbstractWriterInterceptorContext.proceed(AbstractWriterInterceptorContext.java:118)
在org.jboss.resteasy.plugins.interceptors.encoding.GZIPEncodingInterceptor.aroundWriteTo(GZIPEncodingInterceptor.java:100)
。在org.jboss.resteasy.core.interception.AbstractWriterInterceptorContext.proceed(AbstractWriterInterceptorContext.java:122)
在org.jboss.resteasy.core.ServerResponseWriter.writeNomapResponse(ServerResponseWriter.java:99)
。在组织。 jboss.resteasy.core.SynchronousDispatcher.writeResponse(SynchronousDispatcher.java:427)
处org.jboss.resteasy org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:376)
。 core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:179)
处org.jboss.resteasy org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:220)
。 plugins.server.servlet.HttpServletDispatcher.service(HttpSe rvletDispatcher.java:56)在org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service
(HttpServletDispatcher.java:51)
在javax.servlet.http.HttpServlet.service(HttpServlet的。 Java的:在org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511 717)

在org.mortbay.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java: 1166)
处org.mortbay.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler com.google.appengine.api.socket.dev.DevSocketFilter.doFilter(DevSocketFilter.java:74)
。 Java的:在org.mortbay.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler在com.google.appengine.tools.development.ResponseRewriterFilter.doFilter 1157)
(ResponseRewriterFilter.java:127)
。 Java的:1157)
在com.google.appengine.tools.development.HeaderVerificationFilter.doFilter(HeaderVerificationFilter.java:34)
在org.mortbay.jetty.servlet.ServletHandler $ CachedChain.doFilt ER(ServletHandler.java:1157)
在com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:63)
。在org.mortbay.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1157)
在com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)
。在org.mortbay.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1157)
在com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:125)
。在org.mortbay.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1157)
处com.google.appengine.tools.development com.google.appengine.tools.development.DevAppServerModulesFilter.doDirectRequest(DevAppServerModulesFilter.java:366)
。 DevAppServerModulesFilter.doDirectModuleRequest(DevAppServerModulesFilter.java:349)
,位于com.google.appengine.tools.development.DevAppServerModulesFilter.doFilter( DevAppServerModulesFilter.java:116)
在org.mortbay.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1157)
在org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler。 Java的:388),美元,org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216 b $ b)
在org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)在org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)

在org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
在com.google.appengine.tools.development.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:98)
在org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
。在COM .google.appengine.tools.development.JettyContainerService $ ApiProxyHandler.handle(JettyContainerService.java:491)
在org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
。在组织.mortba在org.mortbay.jetty.HttpConnection.handleRequest y.jetty.Server.handle(Server.java:326)
(HttpConnection.java:542)
在org.mortbay.jetty.HttpConnection $ RequestHandler。 headerComplete(HttpConnection.java:923)
在org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:547)在org.mortbay.jetty.HttpParser.parseAvailable
(HttpParser.java:212)在org.mortbay.jetty.HttpConnection.handle
(HttpConnection.java:404)
在org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
。在组织.mortbay.thread.QueuedThreadPool $ PoolThread.run(QueuedThreadPool.java:582)

My <$ c

 <?xml version =1.0encoding = UTF-8\" >?; 
< project xmlns =http://maven.apache.org/POM/4.0.0xmlns:xsi =http://www.w3.org/2001/XMLSchema-instancexsi:schemaLocation =http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">

< modelVersion> 4.0.0< / modelVersion>
<包装>战争< / packaging>
< version> 1.0-SNAPSHOT< / version>
< groupId> org.mygroupid< / groupId>
< artifactId> myproject-server-war< / artifactId>

< parent>
< groupId> org.mygroupid< / groupId>
< artifactId> myproject-server< / artifactId>
< version> 1.0-SNAPSHOT< / version>
< / parent>

<属性>
< appengine.app.version> 1-war< /appengine.app.version>
< project.build.sourceEncoding> UTF-8< /project.build.sourceEncoding>
< / properties>

<依赖关系>
<! - 编译/运行时依赖关系 - >
< dependency>
< groupId> com.google.appengine< / groupId>
< artifactId> appengine-api-1.0-sdk< / artifactId>
< version> $ {appengine.target.version}< / version>
< /依赖关系>
< dependency>
< groupId> javax.servlet< / groupId>
< artifactId> servlet-api< / artifactId>
< version> 2.5< / version>
< scope>提供< / scope>
< /依赖关系>
< dependency>
< groupId> jstl< / groupId>
< artifactId> jstl< / artifactId>
< version> 1.2< / version>
< /依赖关系>

< dependency>
< groupId> mysql< / groupId>
< artifactId> mysql-connector-java< / artifactId>
< version> 5.1.31< / version>
< /依赖关系>

< dependency>
< groupId> com.fasterxml.jackson.jaxrs< / groupId>
< artifactId> jackson-jaxrs-json-provider< / artifactId>
< version> 2.4.1< / version>
< /依赖关系>

< dependency>
< groupId> com.fasterxml.jackson.core< / groupId>
< artifactId> jackson-core< / artifactId>
< version> 2.4.1< / version>
< /依赖关系>

< dependency>
< groupId> com.fasterxml.jackson.core< / groupId>
< artifactId> jackson-databind< / artifactId>
< version> 2.4.1< / version>
< /依赖关系>

< dependency>
< groupId> joda-time< / groupId>
< artifactId> joda-time< / artifactId>
< version> 2.3< / version>
< /依赖关系>


< dependency>
< groupId> org.hibernate< / groupId>
< artifactId> hibernate-core< / artifactId>
< version> 4.2.8.Final< / version>
< /依赖关系>

< dependency>
< groupId> org.hibernate.common< / groupId>
< artifactId> hibernate-commons-annotations< / artifactId>
< version> 4.0.4.Final< / version>
< /依赖关系>

< dependency>
< groupId> org.jboss.resteasy< / groupId>
< artifactId> resteasy-jaxrs< / artifactId>
< version> 3.0.8.Final< / version>
< /依赖关系>

< dependency>
< groupId> com.google.api-client< / groupId>
< artifactId> google-api-client< / artifactId>
< version> 1.19.0< / version>
< /依赖关系>

< dependency>
< groupId> com.google.api-client< / groupId>
< artifactId> google-api-client-gson< / artifactId>
< version> 1.19.0< / version>
< /依赖关系>



<! - - 我们自定义的常用jar。 - >
< dependency>
< groupId> groupid< / groupId>
< artifactId> myproject-common< / artifactId>
< version> 0.1-SNAPSHOT< / version>
< /依赖关系>

<! - Test Dependencies - >
< dependency>
< groupId> com.google.appengine< / groupId>
< artifactId> appengine-testing< / artifactId>
< version> $ {appengine.target.version}< / version>
< scope> test< / scope>
< /依赖关系>
< dependency>
< groupId> com.google.appengine< / groupId>
< artifactId> appengine-api-stubs< / artifactId>
< version> $ {appengine.target.version}< / version>
< scope> test< / scope>
< /依赖关系>

< dependency>
< groupId> junit< / groupId>
< artifactId> junit< / artifactId>
< version> 4.10< / version>
< scope> test< / scope>
< /依赖关系>
< dependency>
< groupId> org.mockito< / groupId>
< artifactId> mockito-all< / artifactId>
< version> 1.9.0< / version>
< scope> test< / scope>
< /依赖关系>

< dependency>
< groupId> groupdId< / groupId>
< artifactId> myproject-common< / artifactId>
< version> 0.1-SNAPSHOT< / version>
< scope> test< / scope>
< /依赖关系>

< dependency>
< groupId> org.codehaus.jackson< / groupId>
< artifactId> jackson-mapper-asl< / artifactId>
< version> 1.9.13< / version>
< scope> test< / scope>
< /依赖关系>


< dependency>
< groupId> org.easytesting< / groupId>
< artifactId> fest-assert-core< / artifactId>
< version> 2.0M10< / version>
< scope> test< / scope>
< /依赖关系>


< / dependencies>

< build>
< outputDirectory> target / $ {project.artifactId} - $ {project.version} / WEB-INF / classes< / outputDirectory>

< plugins>

< plugin>
< groupId> org.apache.maven.plugins< / groupId>
< artifactId> maven-compiler-plugin< / artifactId>
< version> 3.1< / version>
<配置>
< source> 1.7< / source>
< target> 1.7< / target>
< / configuration>
< / plugin>

< plugin>
< groupId> org.apache.maven.plugins< / groupId>
< artifactId> maven-war-plugin< / artifactId>
< version> 2.3< / version>
<配置>
< archiveClasses> true< / archiveClasses>
< webResources>
<! - - 为了从pom中插入版本到appengine-web.xml - >
< resource>
<目录> $ {basedir} / src / main / webapp / WEB-INF< / directory>
<过滤>真实< /过滤>
< targetPath> WEB-INF< / targetPath>
< / resource>
< / webResources>
< / configuration>
< / plugin>
< / plugins>
< / build>


解决方案

这是GAE 1.9.7的工作内容。



属性



 <性状> 
< appengine.target.version> 1.9.7< /appengine.target.version>
< project.build.sourceEncoding> UTF-8< /project.build.sourceEncoding>
< resteasy.version> 3.0.8.Final< /resteasy.version>
< jackson.version> 2.4.1< /jackson.version>
< slf4j.version> 1.7.7< /slf4j.version>
< reflections.version> 0.9.9-RC2< /reflections.version>
< / properties>



依赖管理



 < dependencyManagement> 

<依赖关系>

<! - 第三方依存关系 - >

< dependency>
< groupId> com.google.code.findbugs< / groupId>
< artifactId> findbugs< / artifactId>
< version> 3.0.0< / version>
< /依赖关系>

< dependency>
< groupId> org.reflections< / groupId>
< artifactId>反射< / artifactId>
< version> $ {reflections.version}< / version>
< /依赖关系>

< dependency>
< groupId> com.google.guava< / groupId>
< artifactId>番石榴< / artifactId>
< version> 17.0< / version>
< /依赖关系>

< dependency>
< groupId> com.google.inject< / groupId>
< artifactId> guice< / artifactId>
< version> 3.0< / version>
< /依赖关系>

< dependency>
< groupId> com.google.appengine< / groupId>
< artifactId> appengine-api-1.0-sdk< / artifactId>
< version> $ {appengine.target.version}< / version>
< /依赖关系>

< dependency>
< groupId> com.google.appengine.tools< / groupId>
< artifactId> appengine-gcs-client< / artifactId>
< version> 0.4< / version>
< /依赖关系>

< dependency>
< groupId> com.googlecode.objectify< / groupId>
< artifactId> objectify< / artifactId>
< version> 5.0.3< / version>
< /依赖关系>

< dependency>
< groupId> javax.servlet< / groupId>
< artifactId> servlet-api< / artifactId>
< version> 2.5< / version>
< scope>提供< / scope>
< /依赖关系>

< dependency>
< groupId> org.jboss.resteasy< / groupId>
< artifactId> jaxrs-api< / artifactId>
< version> $ {resteasy.version}< / version>
< /依赖关系>

< dependency>
< groupId> org.jboss.resteasy< / groupId>
< artifactId> resteasy-jaxrs< / artifactId>
< version> $ {resteasy.version}< / version>
< /依赖关系>

< dependency>
< groupId> org.jboss.resteasy< / groupId>
< artifactId> resteasy-jackson2-provider< / artifactId>
< version> $ {resteasy.version}< / version>
< /依赖关系>

< dependency>
< groupId> com.fasterxml.jackson.core< / groupId>
< artifactId> jackson-core< / artifactId>
< version> $ {jackson.version}< / version>
< /依赖关系>

< dependency>
< groupId> com.fasterxml.jackson.core< / groupId>
< artifactId> jackson-databind< / artifactId>
< version> $ {jackson.version}< / version>
< /依赖关系>

< dependency>
< groupId> com.fasterxml.jackson.jaxrs< / groupId>
< artifactId> jackson-jaxrs-json-provider< / artifactId>
< version> $ {jackson.version}< / version>
< /依赖关系>

<! - Test Dependencies - >

< dependency>
< groupId> com.google.appengine< / groupId>
< artifactId> appengine-testing< / artifactId>
< version> $ {appengine.target.version}< / version>
< scope> test< / scope>
< /依赖关系>

< dependency>
< groupId> com.google.appengine< / groupId>
< artifactId> appengine-api-stubs< / artifactId>
< version> $ {appengine.target.version}< / version>
< scope> test< / scope>
< /依赖关系>

< /依赖关系>

< / dependencyManagement>



依赖关系



 <依赖性> 

< dependency>
< groupId> com.google.code.findbugs< / groupId>
< artifactId> findbugs< / artifactId>
< /依赖关系>

< dependency>
< groupId> org.reflections< / groupId>
< artifactId>反射< / artifactId>
< /依赖关系>

< dependency>
< groupId> com.google.guava< / groupId>
< artifactId>番石榴< / artifactId>
< /依赖关系>

< dependency>
< groupId> com.google.inject< / groupId>
< artifactId> guice< / artifactId>
< /依赖关系>

< dependency>
< groupId> com.google.appengine< / groupId>
< artifactId> appengine-api-1.0-sdk< / artifactId>
< version> $ {appengine.target.version}< / version>
< /依赖关系>

< dependency>
< groupId> com.google.appengine.tools< / groupId>
< artifactId> appengine-gcs-client< / artifactId>
< version> 0.4< / version>
< /依赖关系>

< dependency>
< groupId> com.googlecode.objectify< / groupId>
< artifactId> objectify< / artifactId>
< version> 5.0.3< / version>
< /依赖关系>

< dependency>
< groupId> javax.servlet< / groupId>
< artifactId> servlet-api< / artifactId>
< version> 2.5< / version>
< scope>提供< / scope>
< /依赖关系>

< dependency>
< groupId> org.jboss.resteasy< / groupId>
< artifactId> jaxrs-api< / artifactId>
< version> $ {resteasy.version}< / version>
< /依赖关系>

< dependency>
< groupId> org.jboss.resteasy< / groupId>
< artifactId> resteasy-jaxrs< / artifactId>
< version> $ {resteasy.version}< / version>
< /依赖关系>

< dependency>
< groupId> org.jboss.resteasy< / groupId>
< artifactId> resteasy-jackson2-provider< / artifactId>
< version> $ {resteasy.version}< / version>
< /依赖关系>

< dependency>
< groupId> com.fasterxml.jackson.core< / groupId>
< artifactId> jackson-core< / artifactId>
< version> $ {jackson.version}< / version>
< /依赖关系>

< dependency>
< groupId> com.fasterxml.jackson.core< / groupId>
< artifactId> jackson-databind< / artifactId>
< version> $ {jackson.version}< / version>
< /依赖关系>

< dependency>
< groupId> com.fasterxml.jackson.jaxrs< / groupId>
< artifactId> jackson-jaxrs-json-provider< / artifactId>
< version> $ {jackson.version}< / version>
< /依赖关系>

<! - Test Dependencies - >

< dependency>
< groupId> com.google.appengine< / groupId>
< artifactId> appengine-testing< / artifactId>
< version> $ {appengine.target.version}< / version>
< scope> test< / scope>
< /依赖关系>

< dependency>
< groupId> com.google.appengine< / groupId>
< artifactId> appengine-api-stubs< / artifactId>
< version> $ {appengine.target.version}< / version>
< scope> test< / scope>
< /依赖关系>

< /依赖关系>


I'm trying to get an app engine maven project running and appear to have found myself in JAR hell. The project has built and run in the past without using maven, but I've had enough of Eclipse's nonsense and am trying to mavenize the project for all the usual reasons.

Currently everything is working compiling and tests are passing (with mvn clean install from the myproject-war directory shown here). I'm also able to launch mvn appengine:devserver from my myproject-ear directory and get the server running. Navigating to one of my servlets, however, I get the noSuchMethodError trace shown below. (All code is at the bottom for readability).

This looks similar to other posts where jackson versions weren't in sync. However, my jackson versions seem to be ok, as can be seen in my pom.xml, also at the bottom. It appears that that method didn't appear until Jackson 3.0, which again seems ok because of the output of mvn dependency:tree -Dverbose | ack jackson and the fact that I'm depending on 2.4.1.

The most likely culprit I can think of is the google library, which I'm using because I'm following the example here which appears to rely on it. However, I'm not really sure how to go about testing that hypothesis or getting the google library to work without its dependency. Perhaps the <exlcudes> tag, but I'm not sure how I would apply it.

Does anyone have any suggestions or things I'm missing? How can I get the correct version of the class to be used at runtime? Or am I missing something and the solution is something entirely different?

EDIT: Note that on the advice of a comment/answer I have ensured that all of the libraries I am responsible for use the same version of fasterxml/Jackson rather than the older codehaus packaing. I agree that it appears that there is still an older dependency somewhere causing problems, but that is precisely the problem I am struggling to correct.

EDIT 2: I eventually got this working as I cleaned up the overall project and dependency structure, although I can't provide the exacty fix as to why. I think the issue was due to this dependency:

<dependency>
  <groupId>com.fasterxml.jackson.jaxrs</groupId>
  <artifactId>jackson-jaxrs-json-provider</artifactId>
  <version>2.4.1</version>
</dependency>

It has a dependency on org.jboss.resteasy:resteasy-jackson2-provider:3.0.6.Final, which itself depends on com.fasterxml.jackson.core:jackson-databind:2.2.1, which doesn't have the missing method, as I pointed out in my original post.

mvn dependency:tree -Dverbose | ack jackson:

[INFO] +- com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:jar:2.4.1:compile
[INFO] |  +- com.fasterxml.jackson.jaxrs:jackson-jaxrs-base:jar:2.4.1:compile
[INFO] |  |  +- (com.fasterxml.jackson.core:jackson-core:jar:2.4.1:compile - omitted for duplicate)
[INFO] |  |  \- (com.fasterxml.jackson.core:jackson-databind:jar:2.4.1:compile - omitted for duplicate)
[INFO] |  +- (com.fasterxml.jackson.core:jackson-core:jar:2.4.1:compile - omitted for duplicate)
[INFO] |  +- (com.fasterxml.jackson.core:jackson-databind:jar:2.4.1:compile - omitted for duplicate)
[INFO] |  \- com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.4.1:compile
[INFO] |     +- (com.fasterxml.jackson.core:jackson-core:jar:2.4.1:compile - omitted for duplicate)
[INFO] |     \- (com.fasterxml.jackson.core:jackson-databind:jar:2.4.1:compile - omitted for duplicate)
[INFO] +- com.fasterxml.jackson.core:jackson-core:jar:2.4.1:compile
[INFO] +- com.fasterxml.jackson.core:jackson-databind:jar:2.4.1:compile
[INFO] |  +- com.fasterxml.jackson.core:jackson-annotations:jar:2.4.0:compile
[INFO] |  \- (com.fasterxml.jackson.core:jackson-core:jar:2.4.1:compile - omitted for duplicate)
[INFO] |  +- com.google.http-client:google-http-client-jackson2:jar:1.19.0:compile
[INFO] |  |  \- (com.fasterxml.jackson.core:jackson-core:jar:2.1.3:compile - omitted for conflict with 2.4.1)
[INFO] +- org.codehaus.jackson:jackson-mapper-asl:jar:1.9.13:test
[INFO] |  \- org.codehaus.jackson:jackson-core-asl:jar:1.9.13:test

Exception trace:

java.lang.NoSuchMethodError: com.fasterxml.jackson.core.JsonFactory.requiresPropertyOrdering()Z
    at com.fasterxml.jackson.databind.ObjectMapper.<init>(ObjectMapper.java:458)
    at com.fasterxml.jackson.databind.ObjectMapper.<init>(ObjectMapper.java:379)
    at com.fasterxml.jackson.jaxrs.json.JsonMapperConfigurator.getDefaultMapper(JsonMapperConfigurator.java:44)
    at com.fasterxml.jackson.jaxrs.base.ProviderBase.locateMapper(ProviderBase.java:856)
    at com.fasterxml.jackson.jaxrs.base.ProviderBase.writeTo(ProviderBase.java:588)
    at org.jboss.resteasy.core.interception.AbstractWriterInterceptorContext.writeTo(AbstractWriterInterceptorContext.java:129)
    at org.jboss.resteasy.core.interception.ServerWriterInterceptorContext.writeTo(ServerWriterInterceptorContext.java:62)
    at org.jboss.resteasy.core.interception.AbstractWriterInterceptorContext.proceed(AbstractWriterInterceptorContext.java:118)
    at org.jboss.resteasy.plugins.interceptors.encoding.GZIPEncodingInterceptor.aroundWriteTo(GZIPEncodingInterceptor.java:100)
    at org.jboss.resteasy.core.interception.AbstractWriterInterceptorContext.proceed(AbstractWriterInterceptorContext.java:122)
    at org.jboss.resteasy.core.ServerResponseWriter.writeNomapResponse(ServerResponseWriter.java:99)
    at org.jboss.resteasy.core.SynchronousDispatcher.writeResponse(SynchronousDispatcher.java:427)
    at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:376)
    at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:179)
    at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:220)
    at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:56)
    at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:51)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)
    at com.google.appengine.api.socket.dev.DevSocketFilter.doFilter(DevSocketFilter.java:74)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    at com.google.appengine.tools.development.ResponseRewriterFilter.doFilter(ResponseRewriterFilter.java:127)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    at com.google.appengine.tools.development.HeaderVerificationFilter.doFilter(HeaderVerificationFilter.java:34)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:63)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:125)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    at com.google.appengine.tools.development.DevAppServerModulesFilter.doDirectRequest(DevAppServerModulesFilter.java:366)
    at com.google.appengine.tools.development.DevAppServerModulesFilter.doDirectModuleRequest(DevAppServerModulesFilter.java:349)
    at com.google.appengine.tools.development.DevAppServerModulesFilter.doFilter(DevAppServerModulesFilter.java:116)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
    at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
    at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
    at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
    at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
    at com.google.appengine.tools.development.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:98)
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:491)
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    at org.mortbay.jetty.Server.handle(Server.java:326)
    at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
    at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923)
    at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:547)
    at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
    at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
    at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
    at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)

My pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

<modelVersion>4.0.0</modelVersion>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<groupId>org.mygroupid</groupId>
<artifactId>myproject-server-war</artifactId>

<parent>
    <groupId>org.mygroupid</groupId>
    <artifactId>myproject-server</artifactId>
    <version>1.0-SNAPSHOT</version>
</parent>

<properties>
    <appengine.app.version>1-war</appengine.app.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<dependencies>
    <!-- Compile/runtime dependencies -->
    <dependency>
        <groupId>com.google.appengine</groupId>
        <artifactId>appengine-api-1.0-sdk</artifactId>
        <version>${appengine.target.version}</version>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>jstl</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>

    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.31</version>
    </dependency>

    <dependency>
      <groupId>com.fasterxml.jackson.jaxrs</groupId>
      <artifactId>jackson-jaxrs-json-provider</artifactId>
      <version>2.4.1</version>
    </dependency>

    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-core</artifactId>
      <version>2.4.1</version>
    </dependency>

    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.4.1</version>
    </dependency>

    <dependency>
      <groupId>joda-time</groupId>
      <artifactId>joda-time</artifactId>
      <version>2.3</version>
    </dependency>


    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>4.2.8.Final</version>
    </dependency>

    <dependency>
      <groupId>org.hibernate.common</groupId>
      <artifactId>hibernate-commons-annotations</artifactId>
      <version>4.0.4.Final</version>
    </dependency>

    <dependency>
      <groupId>org.jboss.resteasy</groupId>
      <artifactId>resteasy-jaxrs</artifactId>
      <version>3.0.8.Final</version>
    </dependency>

    <dependency>
      <groupId>com.google.api-client</groupId>
      <artifactId>google-api-client</artifactId>
      <version>1.19.0</version>
    </dependency>

    <dependency>
      <groupId>com.google.api-client</groupId>
      <artifactId>google-api-client-gson</artifactId>
      <version>1.19.0</version>
    </dependency>



    <!-- Our custom common jar. -->
    <dependency>
        <groupId>groupid</groupId>
        <artifactId>myproject-common</artifactId>
        <version>0.1-SNAPSHOT</version>
    </dependency>

    <!-- Test Dependencies -->
    <dependency>
        <groupId>com.google.appengine</groupId>
        <artifactId>appengine-testing</artifactId>
        <version>${appengine.target.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>com.google.appengine</groupId>
        <artifactId>appengine-api-stubs</artifactId>
        <version>${appengine.target.version}</version>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.10</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-all</artifactId>
        <version>1.9.0</version>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>groupdId</groupId>
        <artifactId>myproject-common</artifactId>
        <version>0.1-SNAPSHOT</version>
        <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.codehaus.jackson</groupId>
      <artifactId>jackson-mapper-asl</artifactId>
      <version>1.9.13</version>
      <scope>test</scope>
    </dependency>


    <dependency>
      <groupId>org.easytesting</groupId>
      <artifactId>fest-assert-core</artifactId>
      <version>2.0M10</version>
      <scope>test</scope>
    </dependency>


</dependencies>

<build>
    <outputDirectory>target/${project.artifactId}-${project.version}/WEB-INF/classes</outputDirectory> 

    <plugins>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.1</version>
        <configuration>
            <source>1.7</source>
            <target>1.7</target>
        </configuration>
    </plugin>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.3</version>
            <configuration>
                <archiveClasses>true</archiveClasses>
                <webResources>
                    <!-- in order to interpolate version from pom into appengine-web.xml -->
                    <resource>
                        <directory>${basedir}/src/main/webapp/WEB-INF</directory>
                        <filtering>true</filtering>
                        <targetPath>WEB-INF</targetPath>
                    </resource>
                </webResources>
            </configuration>
        </plugin>
    </plugins>
</build>

解决方案

This is what is working for me with GAE 1.9.7

Properties

<properties>
    <appengine.target.version>1.9.7</appengine.target.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <resteasy.version>3.0.8.Final</resteasy.version>
    <jackson.version>2.4.1</jackson.version>
    <slf4j.version>1.7.7</slf4j.version>
    <reflections.version>0.9.9-RC2</reflections.version>
</properties>

Dependency Management

<dependencyManagement>

    <dependencies>

        <!-- Third Party Dependencies -->

        <dependency>
            <groupId>com.google.code.findbugs</groupId>
            <artifactId>findbugs</artifactId>
            <version>3.0.0</version>
        </dependency>

        <dependency>
            <groupId>org.reflections</groupId>
            <artifactId>reflections</artifactId>
            <version>${reflections.version}</version>
        </dependency>

        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>17.0</version>
        </dependency>

        <dependency>
            <groupId>com.google.inject</groupId>
            <artifactId>guice</artifactId>
            <version>3.0</version>
        </dependency>

        <dependency>
            <groupId>com.google.appengine</groupId>
            <artifactId>appengine-api-1.0-sdk</artifactId>
            <version>${appengine.target.version}</version>
        </dependency>

        <dependency>
            <groupId>com.google.appengine.tools</groupId>
            <artifactId>appengine-gcs-client</artifactId>
            <version>0.4</version>
        </dependency>

        <dependency>
            <groupId>com.googlecode.objectify</groupId>
            <artifactId>objectify</artifactId>
            <version>5.0.3</version>
        </dependency>

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>jaxrs-api</artifactId>
            <version>${resteasy.version}</version>
        </dependency>

        <dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>resteasy-jaxrs</artifactId>
            <version>${resteasy.version}</version>
        </dependency>

        <dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>resteasy-jackson2-provider</artifactId>
            <version>${resteasy.version}</version>
        </dependency>

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>${jackson.version}</version>
        </dependency>

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>${jackson.version}</version>
        </dependency>

        <dependency>
            <groupId>com.fasterxml.jackson.jaxrs</groupId>
            <artifactId>jackson-jaxrs-json-provider</artifactId>
            <version>${jackson.version}</version>
        </dependency>

        <!-- Test Dependencies -->

        <dependency>
            <groupId>com.google.appengine</groupId>
            <artifactId>appengine-testing</artifactId>
            <version>${appengine.target.version}</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>com.google.appengine</groupId>
            <artifactId>appengine-api-stubs</artifactId>
            <version>${appengine.target.version}</version>
            <scope>test</scope>
        </dependency>

    </dependencies>

</dependencyManagement>

Dependencies

<dependencies>

    <dependency>
        <groupId>com.google.code.findbugs</groupId>
        <artifactId>findbugs</artifactId>
    </dependency>

    <dependency>
        <groupId>org.reflections</groupId>
        <artifactId>reflections</artifactId>
    </dependency>

    <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
    </dependency>

    <dependency>
        <groupId>com.google.inject</groupId>
        <artifactId>guice</artifactId>
    </dependency>

    <dependency>
        <groupId>com.google.appengine</groupId>
        <artifactId>appengine-api-1.0-sdk</artifactId>
        <version>${appengine.target.version}</version>
    </dependency>

    <dependency>
        <groupId>com.google.appengine.tools</groupId>
        <artifactId>appengine-gcs-client</artifactId>
        <version>0.4</version>
    </dependency>

    <dependency>
        <groupId>com.googlecode.objectify</groupId>
        <artifactId>objectify</artifactId>
        <version>5.0.3</version>
    </dependency>

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5</version>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>jaxrs-api</artifactId>
        <version>${resteasy.version}</version>
    </dependency>

    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-jaxrs</artifactId>
        <version>${resteasy.version}</version>
    </dependency>

    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-jackson2-provider</artifactId>
        <version>${resteasy.version}</version>
    </dependency>

    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>${jackson.version}</version>
    </dependency>

    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>${jackson.version}</version>
    </dependency>

    <dependency>
        <groupId>com.fasterxml.jackson.jaxrs</groupId>
        <artifactId>jackson-jaxrs-json-provider</artifactId>
        <version>${jackson.version}</version>
    </dependency>

    <!-- Test Dependencies -->

    <dependency>
        <groupId>com.google.appengine</groupId>
        <artifactId>appengine-testing</artifactId>
        <version>${appengine.target.version}</version>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>com.google.appengine</groupId>
        <artifactId>appengine-api-stubs</artifactId>
        <version>${appengine.target.version}</version>
        <scope>test</scope>
    </dependency>

</dependencies>

这篇关于Jackson NoSuchMethodError需要PropertyPropertyOrdering在运行时与谷歌应用程序引擎项目maven的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆