2017-09-11 88 views
0

我包含最新版本的Google API客户端(用于与AppEngine端点交互)。Google API客户端链接错误版本的jackson-core

我得到这个崩溃组装时:

* Exception is: 
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':backend:endpointsDiscoveryDocs'. 
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:100) 
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:70) 
    at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:63) 
    at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54) 
    at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58) 
    at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:88) 
    at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:52) 
    at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52) 
    at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54) 
    at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43) 
    at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34) 
    at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.run(DefaultTaskGraphExecuter.java:248) 
    at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336) 
    at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328) 
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:197) 
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:107) 
    at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:241) 
    at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:230) 
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.processTask(DefaultTaskPlanExecutor.java:124) 
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.access$200(DefaultTaskPlanExecutor.java:80) 
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:105) 
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:99) 
    at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.execute(DefaultTaskExecutionPlan.java:625) 
    at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.executeWithTask(DefaultTaskExecutionPlan.java:580) 
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.run(DefaultTaskPlanExecutor.java:99) 
    at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63) 
    at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46) 
    at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55) 
Caused by: java.lang.NoSuchMethodError: com.fasterxml.jackson.core.JsonFactory.requiresPropertyOrdering()Z 
    at com.fasterxml.jackson.databind.ObjectMapper.<init>(ObjectMapper.java:537) 
    at com.fasterxml.jackson.databind.ObjectMapper.<init>(ObjectMapper.java:448) 
    at com.google.api.server.spi.ObjectMapperUtil.createStandardObjectMapper(ObjectMapperUtil.java:75) 
    at com.google.api.server.spi.ObjectMapperUtil.createStandardObjectMapper(ObjectMapperUtil.java:62) 
    at com.google.api.server.spi.tools.GenClientLibAction.<clinit>(GenClientLibAction.java:37) 
    at com.google.api.server.spi.tools.EndpointsTool.<init>(EndpointsTool.java:55) 
    at com.google.cloud.tools.gradle.endpoints.framework.server.task.GenerateDiscoveryDocsTask.generateDiscoveryDocs(GenerateDiscoveryDocsTask.java:122) 
    at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73) 
    at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$StandardTaskAction.doExecute(DefaultTaskClassInfoStore.java:141) 
    at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$StandardTaskAction.execute(DefaultTaskClassInfoStore.java:134) 
    at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$StandardTaskAction.execute(DefaultTaskClassInfoStore.java:121) 
    at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:731) 
    at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:705) 
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.java:122) 
    at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336) 
    at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328) 
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:197) 
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:107) 
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:111) 
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:92) 
    ... 27 more 

我检查了我的依赖关系:

+--- com.google.apis:google-api-services-oauth2:v1-rev129-1.22.0 
| \--- com.google.api-client:google-api-client:1.22.0 
|   +--- com.google.oauth-client:google-oauth-client:1.22.0 
|   | +--- com.google.http-client:google-http-client:1.22.0 
|   | | \--- com.google.code.findbugs:jsr305:1.3.9 -> 3.0.1 
|   | \--- com.google.code.findbugs:jsr305:1.3.9 -> 3.0.1 
|   +--- com.google.http-client:google-http-client-jackson2:1.22.0 
|   | +--- com.google.http-client:google-http-client:1.22.0 (*) 
|   | \--- com.fasterxml.jackson.core:jackson-core:2.1.3 
|   \--- com.google.guava:guava-jdk5:17.0 

正如你所看到的,jackson-core版本包括为2.1.3

但是,函数com.fasterxml.jackson.core.JsonFactory.requiresPropertyOrdering()Z的第一个声明发生在2.3版本:

http://grepcode.com/file/repo1.maven.org/maven2/com.fasterxml.jackson.core/jackson-core/2.3.0/com/fasterxml/jackson/core/JsonFactory.java/

正在链接错误jackson-core版本的谷歌图书馆?

如果相关,在将我的Google Cloud端点代码迁移到v2的过程中会发生这种情况。

更新1

当我删除从谷歌API客户端的依赖,或者当我强迫升级的情况下发生同样的错误。

升级时

实例依赖关系树:

+--- com.google.apis:google-api-services-oauth2:v1-rev129-1.22.0 
| \--- com.google.api-client:google-api-client:1.22.0 
|   +--- com.google.oauth-client:google-oauth-client:1.22.0 
|   | +--- com.google.http-client:google-http-client:1.22.0 
|   | | \--- com.google.code.findbugs:jsr305:1.3.9 -> 3.0.1 
|   | \--- com.google.code.findbugs:jsr305:1.3.9 -> 3.0.1 
|   +--- com.google.http-client:google-http-client-jackson2:1.22.0 
|   | +--- com.google.http-client:google-http-client:1.22.0 (*) 
|   | \--- com.fasterxml.jackson.core:jackson-core:2.1.3 -> 2.6.0 
|   \--- com.google.guava:guava-jdk5:17.0 

摇篮片断我用来升级的依赖:

configurations { 
    all { 
     resolutionStrategy { 
      force 'com.fasterxml.jackson.core:jackson-core:2.6.0' 
      force 'com.fasterxml.jackson.databind:jackson-databind:2.6.0' 
     } 
    } 
} 

摇篮片断我用来去除依赖性:

compile "com.google.apis:google-api-services-oauth2:v1-rev129-1.22.0", { 
    exclude group: "com.fasterxml.jackson.core", module: "jackson-core" 
} 

更新2

看来可能还有其他问题。同步时出现以下错误:

14:13:27.882 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] Caused by: java.lang.NoClassDefFoundError: Could not initialize class com.google.api.server.spi.tools.GenClientLibAction 
14:13:27.882 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] at com.google.api.server.spi.tools.EndpointsTool.<init>(EndpointsTool.java:55) 
14:13:27.882 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] at com.google.cloud.tools.gradle.endpoints.framework.server.task.GenerateDiscoveryDocsTask.generateDiscoveryDocs(GenerateDiscoveryDocsTask.java:122) 
14:13:27.882 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73) 

这可能是因为这并没有同步正在建立的每一次失败。

+0

你算出GenClientLibAction了吗?自迁移以来,我遇到同样的问题 – jirungaray

+0

不幸的是没有。我正在考虑从头开始系统而不是迁移。 – Knossos

回答

0

该问题已通过解决方案得到解决。

github issue tracker for the Google Cloud Platform存在问题。

The solution itself can be found here

该修补程序简而言之就是将所有buildscript依赖项移动到根项目build.gradle文件中。

And the suggestion on that bug is to add all buildscript dependencies in the root. So just move everything from backend/build.gradle/buildscript -> build.gradle/buildscript, so that dependencies are forced to their latest versions.

0

端点框架需要比客户端库更新的Jackson版本。如果您在同一个库中有客户端库和Endpoint框架,则应该从客户端库中排除Jackson依赖项。

+0

我用你建议的结果编辑了我的文章。我尝试删除依赖项并强制升级它。 – Knossos

+0

远射,但你也可以尝试'排除组:'com.google.guava',模块:'guava-jdk5''除了你有什么? – saiyr

+0

不幸的是,没有变化(除了番石榴不再是一个依赖) – Knossos

相关问题