2017-09-11 37 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

相關問題