2014-11-04 4 views
2

Я получаю эту ошибку, так как я обновил Android Studio 9.1 и Gradle 14. +:java.lang.NoSuchMethodError: com.google.common.io.Files.asCharSink

Я выполнение задачи assembleRelease в моем проекте. А вот что я получил:

* What went wrong: 
Execution failed for task ':app:dexParisRelease'. 
> com.google.common.io.Files.asCharSink(Ljava/io/File;Ljava/nio/charset/Charset;[Lcom/google/common/io/FileWriteMode;)Lcom/google/common/io/CharSink; 

* Try:   
Run with --info or --debug option to get more log output. 

* Exception is: 
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:dexParisRelease'. 
     at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69) 
     at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46) 
     at org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35) 
     at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:64) 
     at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58) 
     at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:42) 
     at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52) 
     at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:53) 
     at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43) 
     at org.gradle.api.internal.AbstractTask.executeWithoutThrowingTaskFailure(AbstractTask.java:305) 
     at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.executeTask(AbstractTaskPlanExecutor.java:79) 
     at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:63) 
     at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:51) 
     at org.gradle.internal.concurrent.DefaultExecutorFactory$StoppableExecutorImpl$1.run(DefaultExecutorFactory.java:64) 
Caused by: java.lang.NoSuchMethodError: com.google.common.io.Files.asCharSink(Ljava/io/File;Ljava/nio/charset/Charset;[Lcom/google/common/io/FileWriteMode;)Lcom/google/common/io/CharSink; 
     at com.android.builder.core.AndroidBuilder.getFilesToAdd(AndroidBuilder.java:1429) 
     at com.android.builder.core.AndroidBuilder.convertByteCode(AndroidBuilder.java:1408) 
     at com.android.builder.core.AndroidBuilder$convertByteCode$4.call(Unknown Source) 
     at com.android.build.gradle.tasks.Dex.doTaskAction(Dex.groovy:136) 
     at com.android.build.gradle.tasks.Dex.this$5$doTaskAction(Dex.groovy) 
     at com.android.build.gradle.tasks.Dex$this$5$doTaskAction.callCurrent(Unknown Source) 
     at com.android.build.gradle.tasks.Dex.taskAction(Dex.groovy:79) 
     at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:63) 
     at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$IncrementalTaskAction.doExecute(AnnotationProcessingTaskFactory.java:235) 
     at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:211) 
     at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$IncrementalTaskAction.execute(AnnotationProcessingTaskFactory.java:222) 
     at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:200) 
     at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80) 
     at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61) 
     ... 13 more 

Любая идея, пожалуйста?

ответ

1

Вы используете две разные версии Guava одновременно.

Ваш стек не является полным, поэтому я не могу ответить полностью. Кроме того, я не знаю Android Studio.

Но, я могу прочитать вашу трассировку стека, и я вижу, что класс AndroidBuilder пытается получить доступ к методу com.google.common.io.Files.asCharSink. Метод asCharSink существует из Guava 14.

Обычно ошибка возникает, когда вы возитесь с зависимостями.

Учитывая, что вы видите некоторые компоненты трассировки трассы, указывающие Gradle, и что вы упоминаете использование Gradle, я понимаю, что вы получаете эту проблему при создании с использованием Gradle.

Таким образом, я не думаю, что вы на самом деле беспорядок с зависимостями, а скорее, что у вас есть несовместимости между вашей версией gradle (требующей Guava 14 или новее), а Guava фактически загружен в путь к классам вашего строителя.

Итак, проверьте, как называется Gradle, и обновите версию этого инструмента до версии 14 или более поздней версии.

+0

Спасибо, искренне оливье, я редактирую свой пост и добавляю все стек. Это действительно может быть проблемой градиента. Дело в том, что у меня нет власти и системы построения градиента. Они также просто сделали обновление. Кроме того, у меня есть другие проекты, использующие ту же конфигурацию gradle и использующую ту же версию Guava и которая компилируется. T_T Я чувствую себя бессильным. –

+0

У меня такая же проблема с другим приложением, и мы вообще не используем Guava. На самом деле, это было просто отлично, примерно за час до этого, и вдруг это случилось. Нулевые изменения в приложении, разница в часах заключалась в том, что я ушел, чтобы поужинать. Есть ли способ вручную переопределить версию guava, указанную в нашем пути к классам, без добавления ее в зависимости от проекта? FWIW, это происходит в версиях плагинов 0.14.0-0.14.2 –

+0

Я думаю, что это ошибка в плагине Gradle. Я написал здесь отчет: https://code.google.com/p/android/issues/detail?id=79331 –