2015-10-15 75 views
2

我正在嘗試將Maven的Android項目遷移到Gradle(以及Eclipse到Android Studio)。該項目很大,包含多個模塊。交換機的主要原因是獲得Multidex支持。Android Gradle構建問題w/Dagger

爲了讓我的腳溼的Gradle我試圖隔離和建立所有其他模塊使用的「框架」模塊。

這裏是build.gradle

buildscript { 
    repositories { 
     jcenter() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:1.3.0' 
    } 
} 

apply plugin: 'android-library' 

description = 'Framework Implementation' 

dependencies { 
    compile group: 'com.squareup.dagger', name: 'dagger', version:'1.2.2' 
    compile(group: 'com.squareup.dagger', name: 'dagger-compiler',  version:'1.2.2') { 
     exclude(module: 'guava') 
    } 
    compile group: 'org.codehaus.jackson', name: 'jackson-core-asl', version:'1.9.13' 
    compile group: 'org.codehaus.jackson', name: 'jackson-mapper-asl', version:'1.9.13' 
    compile group: 'com.github.tony19', name: 'logback-android-core', version:'1.0.10-2' 
    compile group: 'com.github.tony19', name: 'logback-android-classic', version:'1.0.10-2' 
    compile group: 'org.slf4j', name: 'slf4j-api', version:'1.7.5' 
    compile group: 'org.springframework.android', name: 'spring-android-rest-template', version:'2.0.0.M2' 
    compile group: 'com.squareup.okhttp', name: 'okhttp', version:'2.5.0', classifier:'COMPANY' 
    compile group: 'com.squareup.okhttp', name: 'okhttp-urlconnection', version:'2.5.0', classifier:'COMPANY' 
    compile group: 'org.apache.httpcomponents', name: 'httpclient-android', version:'4.3.5' 
    testCompile group: 'ch.qos.logback', name: 'logback-classic', version:'1.0.9' 
    testCompile group: 'junit', name: 'junit', version:'4.11' 
    testCompile group: 'org.mockito', name: 'mockito-core', version:'1.9.5' 
    testCompile group: 'org.robolectric', name: 'robolectric', version:'2.2' 
    testCompile group: 'org.powermock', name: 'powermock-module-junit4', version:'1.6.1' 
    testCompile group: 'org.powermock', name: 'powermock-api-mockito', version:'1.6.1' 
} 

android { 
    sourceSets { 
     main { 
      manifest.srcFile 'AndroidManifest.xml' 
      java.srcDirs = ['src'] 
      resources.srcDirs = ['src'] 
      res.srcDirs = ['res'] 
      assets.srcDirs = ['assets'] 
     } 
    } 

    compileSdkVersion 19 
    buildToolsVersion "19.1.0" 

    defaultConfig { 
     minSdkVersion 19 
     targetSdkVersion 19 
    } 
} 

task wrapper(type: Wrapper) { 
    gradleVersion = '2.3' 
} 

試圖用gradlew.bat --build構建和我收到以下錯誤:

FAILURE: Build failed with an exception. 

* What went wrong: 
Execution failed for task ':co-framework:compileDebugJavaWithJavac'. 
> java.lang.ClassCastException: com.sun.tools.javac.code.Symbol$VarSymbol cannot be cast to javax.lang.model.element.ExecutableElement 

堆棧跟蹤顯示:

* Exception is: 
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':co-framework:compileDebugJavaWithJavac'. 
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:52) 
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.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:203) 
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:185) 
at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:62) 
at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:50) 
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:25) 
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:110) 
at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:37) 
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37) 
at org.gradle.execution.DefaultBuildExecuter.access$000(DefaultBuildExecuter.java:23) 
at org.gradle.execution.DefaultBuildExecuter$1.proceed(DefaultBuildExecuter.java:43) 
at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32) 
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37) 
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:30) 
at org.gradle.initialization.DefaultGradleLauncher$4.run(DefaultGradleLauncher.java:155) 
at org.gradle.internal.Factories$1.create(Factories.java:22) 
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90) 
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:52) 
at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:152) 
at org.gradle.initialization.DefaultGradleLauncher.access$200(DefaultGradleLauncher.java:33) 
at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:100) 
at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:94) 
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90) 
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:62) 
at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:94) 
at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:83) 
at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:94) 
at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:28) 
at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35) 
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:43) 
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:28) 
at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:77) 
at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:47) 
at org.gradle.launcher.exec.DaemonUsageSuggestingBuildActionExecuter.execute(DaemonUsageSuggestingBuildActionExecuter.java:51) 
at org.gradle.launcher.exec.DaemonUsageSuggestingBuildActionExecuter.execute(DaemonUsageSuggestingBuildActionExecuter.java:28) 
at org.gradle.launcher.cli.RunBuildAction.run(RunBuildAction.java:43) 
at org.gradle.internal.Actions$RunnableActionAdapter.execute(Actions.java:170) 
at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:237) 
at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:210) 
at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:35) 
at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:24) 
at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:206) 
at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:169) 
at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:33) 
at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:22) 
at org.gradle.launcher.Main.doAction(Main.java:33) 
at org.gradle.launcher.bootstrap.EntryPoint.run(EntryPoint.java:45) 
at org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBootstrap.java:54) 
at org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.java:35) 
at org.gradle.launcher.GradleMain.main(GradleMain.java:23) 
at org.gradle.wrapper.BootstrapMainStarter.start(BootstrapMainStarter.java:30) 
at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:129) 
at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:61) 
Caused by: java.lang.RuntimeException: java.lang.ClassCastException: com.sun.tools.javac.code.Symbol$VarSymbol cannot be cast to javax.lang.model.element.ExecutableElement 
at com.sun.tools.javac.main.Main.compile(Main.java:469) 
at com.sun.tools.javac.api.JavacTaskImpl.call(JavacTaskImpl.java:132) 
at org.gradle.api.internal.tasks.compile.JdkJavaCompiler.execute(JdkJavaCompiler.java:45) 
at org.gradle.api.internal.tasks.compile.JdkJavaCompiler.execute(JdkJavaCompiler.java:33) 
at org.gradle.api.internal.tasks.compile.NormalizingJavaCompiler.delegateAndHandleErrors(NormalizingJavaCompiler.java:101) 
at org.gradle.api.internal.tasks.compile.NormalizingJavaCompiler.execute(NormalizingJavaCompiler.java:50) 
at org.gradle.api.internal.tasks.compile.NormalizingJavaCompiler.execute(NormalizingJavaCompiler.java:36) 
at org.gradle.api.internal.tasks.compile.CleaningJavaCompilerSupport.execute(CleaningJavaCompilerSupport.java:34) 
at org.gradle.api.internal.tasks.compile.CleaningJavaCompilerSupport.execute(CleaningJavaCompilerSupport.java:25) 
at org.gradle.api.tasks.compile.JavaCompile.performCompilation(JavaCompile.java:157) 
at org.gradle.api.tasks.compile.JavaCompile.compile(JavaCompile.java:139) 
at org.gradle.api.tasks.compile.JavaCompile.compile(JavaCompile.java:93) 
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:75) 
at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$IncrementalTaskAction.doExecute(AnnotationProcessingTaskFactory.java:243) 
at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:219) 
at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$IncrementalTaskAction.execute(AnnotationProcessingTaskFactory.java:230) 
at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:208) 
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80) 
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61) 
... 60 more 
Caused by: java.lang.ClassCastException: com.sun.tools.javac.code.Symbol$VarSymbol cannot be cast to javax.lang.model.element.ExecutableElement 
at dagger.internal.codegen.ModuleAdapterProcessor.providerMethodsByClass(ModuleAdapterProcessor.java:172) 
at dagger.internal.codegen.ModuleAdapterProcessor.process(ModuleAdapterProcessor.java:98) 
at com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:793) 
at com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(JavacProcessingEnvironment.java:722) 
at com.sun.tools.javac.processing.JavacProcessingEnvironment.access$1700(JavacProcessingEnvironment.java:97) 
at com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.run(JavacProcessingEnvironment.java:1029) 
at  com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:1163) 
at  com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:1108) 
at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:824) 
at com.sun.tools.javac.main.Main.compile(Main.java:439) 
... 78 more 


BUILD FAILED 

Total time: 13.957 secs 

有沒有人穿過來這之前?有任何想法嗎?

的Java:

java version "1.7.0_45" 
Java(TM) SE Runtime Environment (build 1.7.0_45-b18) 
Java HotSpot(TM) 64-Bit Server VM (build 24.45-b08, mixed mode) 

回答

0

Here's來自Dagger問題跟蹤器的討論。似乎匕首隱藏了實際的錯誤。刪除匕首編譯器的依賴關係,你應該看到錯誤是什麼(似乎是由導入不好或通配符導入的註釋造成的)