为什么在编译时使用kotlin在Dagger2中使用Scopes和Singleton注释会导致错误?

该应用程序工作正常,除非我在一些“提供”方法之前添加@MainScope或@Singleton注释,然后我得到gradle生成错误

错误:执行任务':app:kaptDebugKotlin'失败。 内部编译器错误。 查看日志了解更多详情

日志包含这个:

生成时间戳:本地:1508577084874,设备:1508577084874 2017-10-21 11:18:34,358 [216576]信息 – ools.idea.fd.InstantRunBuilder – BuildCause:FIRST_INSTALLATION_TO_DEVICE,BuildMode:FULL 2017-10-21 11:18:34,359 [216577]信息 – ild.invoker.GradleBuildInvoker – 将执行Gradle任务:[:app:assembleDebug] 2017-10-21 11:18:34,377 [216595]信息 – s.plugins.gradle.GradleManager – 指示gradle使用java从C:/ Program Files / Java / jdk1.8.0_144 2017-10-21 11:18:34,408 [216626] INFO – util.EmbeddedDistributionPaths – 在'C:\ Program Files \ prebuilts \ tools \ common \ offline-m2'2017-10-21 11:18:34,408 [216626] INFO – ild.invoker.GradleBuildInvoker – 构建命令行选项:[–configure-on-demand,-Pandroid.injected.invoked.from。 ide = true,-Pandroid.injected.build.api = 25,-Pandroid.injected.build.density = 560dpi,-Pandroid.injected.build.abi = x86,-Pandroid.injected.restrict.variant.name = debug, -Pandroid.injected.restrict.variant.project =:应用程序, -Pandroid.optional.compilation = INSTANT_DEV,FULL_APK,-Pandroid.injected.coldswap.mode = MULTIAPK] 2017-10-21 11:18:34,420 [216638]信息 – xecution.GradleExecutionHelper – 将命令行参数传递给Gradle Tooling API :–configure-on-demand -Pandroid.injected.invoked.from.ide = true -Pandroid.injected.build.api = 25 -Pandroid.injected.build.density = 560dpi -Pandroid.injected.build.abi = x86 -Pandroid.injected.restrict.variant.name = debug -Pandroid.injected.restrict.variant.project =:app -Pandroid.optional.compilation = INSTANT_DEV,FULL_APK -Pandroid.injected.coldswap.mode = MULTIAP 2017-10-21 11:18:36,975 [219193] INFO – roid.sdk.MessageBuildingSdkLog – com.android.ide.common.blame.Message。(com.android.ide.common.blame.Message $ Kind,java.lang.String,java .lang.String,com.google.common.collect.ImmutableList)java.lang.NoSuchMethodException:com.android.ide.common.blame.Message。(com.android.ide.common.blame.Message $ Kind,java。 lang.String,java.lang.String,com.google.common.collect.ImmutableList) 在java.lang.Class.getConstructor0(Class.java:3082)at java.lang.Class.getConstructor(Class.java:1825)at org.jetbrains.kotlin.android.KotlinOutputParserHelper $ simpleMessageConstructor $ 2.invoke(KotlinOutputParserHelper.kt: 171)org.jetbrains.kotlin.android.KotlinOutputParserHelper $ simpleMessageConstructor $ 2.invoke(KotlinOutputParserHelper.kt:143)at kotlin.SynchronizedLazyImpl.getValue(Lazy.kt:130)at org.jetbrains.kotlin.android.KotlinOutputParserHelper.getSimpleMessageConstructor( KotlinOutputParserHelper.kt)at org.jetbrains.kotlin.android.KotlinOutputParserHelper.createNewMessage(KotlinOutputParserHelper.kt:272)at org.jetbrains.kotlin.android.KotlinOutputParserHelper.createMessage(KotlinOutputParserHelper.kt:250)at org.jetbrains.kotlin.android .KotlinOutputParserHelper.createMessage $ default(KotlinOutputParserHelper.kt:244)at org.jetbrains.kotlin.android.KotlinOutputParserHelperKt.parse(KotlinOutputParserHelper.kt:66)at org.jetbrains.kotlin.android.KotlinOutputParser.parse(Kotl inOutputParser.java:28)at com.android.ide.common.blame.parser.ToolOutputParser.parseToolOutput(ToolOutputParser.java:86)at com.android.tools.idea.gradle.output.parser.BuildOutputParser.parseGradleOutput(BuildOutputParser。 java:43)at com.intellij.openapi.application.impl.ApplicationImpl $ 2 com.android.tools.idea.gradle.project.build.invoker.GradleTasksExecutor $ GradleTasksExecutorImpl.lambda $ collectMessages $ 5(GradleTasksExecutor.java:517)。在java.util.concurrent.Executors上运行(ApplicationImpl.java:342)$ java.util.concurrent上的java.util.concurrent.FutureTask.run(FutureTask.java:266)上的RunnableAdapter.call(Executors.java:511) .ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:617)at java.lang.Thread.run(Thread.java:745)2017-10-21 11:18:36,981 [219199] INFO – roid.sdk.MessageBuildingSdkLog – KotlinOutputParser的异常2017-10-21 11:18:36,983 [219201] INFO – roid.sdk.MessageBuildingSdkLog – c om.android.ide.common.blame.Message。(com.android.ide.common.blame.Message $ Kind,java.lang.String,java.lang.String,com.google.common.collect.ImmutableList)java 。com.android.ide.common.blame.Message $ Kind,java.lang.String,java.lang.String,com.google.common。在java.lang.Class.getConstructor0(Class.java:3082)java.lang.Class.getConstructor(Class.java:1825)at org.jetbrains.kotlin.android.KotlinOutputParserHelper $ simpleMessageConstructor $ 2.invoke( KotlinOutputParserHelper.kt:171)at org.jetbrains.kotlin.android.KotlinOutputParserHelper $ simpleMessageConstructor $ 2.invoke(KotlinOutputParserHelper.kt:143)at kotlin.SynchronizedLazyImpl.getValue(Lazy.kt:130)at org.jetbrains.kotlin.android。 KotlinOutputParserHelper.getSimpleMessageConstructor(KotlinOutputParserHelper.kt)at org.jetbrains.kotlin.android.KotlinOutputParserHelper.createNewMessage(KotlinOutputParserHelper.kt:272)at org.jetbrains.kotlin.and (KotlinOutputParserHelper.kt:250)at org.jetbrains.kotlin.android.KotlinOutputParserHelper.createMessage $ default(KotlinOutputParserHelper.kt:244)at org.jetbrains.kotlin.android.KotlinOutputParserHelperKt.parse(KotlinOutputParserHelper.kt: 41)org.jetbrains.kotlin.android.KotlinOutputParser.parse(KotlinOutputParser.java:28)at com.android.ide.common.blame.parser.ToolOutputParser.parseToolOutput(ToolOutputParser.java:86)at com.android.tools .idea.gradle.output.parser.BuildOutputParser.parseGradleOutput(BuildOutputParser.java:43)at com.android.tools.idea.gradle.project.build.invoker.GradleTasksExecutor $ GradleTasksExecutorImpl.lambda $ collectMessages $ 5(GradleTasksExecutor.java:517 )com.intellij.openapi.application.impl.ApplicationImpl $ 2.run(ApplicationImpl.java:342)at java.util.concurrent.Executors $ RunnableAdapter.call(Executors.java:511)at java.util.concurrent.FutureTask .run(FutureTask.java:266)在java.util.concurrent.ThreadPoolExecutor。 在java.util.concurrent.ThreadPoolExecutor上运行RunWorker(ThreadPoolExecutor.java:1142)$ Worker.run(ThreadPoolExecutor.java:617)at java.lang.Thread.run(Thread.java:745)2017-10-21 11:18 :36,983 [219201]信息 – ro.jp.messageBuildingSdkLog – 从KotlinOutputParser异常2017-10-21 11:18:37,092 [219310]信息 – pl.ProjectRootManagerComponent – 项目根已经改变2017-10-21 11:18:37,108 [ 219326]信息 – a.gradle.run.MakeBeforeRunTask – Gradle调用完成,成功= false 2017-10-21 11:18:37,195 [219413] INFO – .diagnostic.PerformanceWatcher – 推送属性需要8ms; 一般的反应:好的; EDT响应:好2017-10-21 11:18:37,334 [219552]信息 – .diagnostic.PerformanceWatcher – 可转位文件迭代需要138毫秒; 一般的反应:好的; EDT响应:好2017-10-21 11:18:37,339 [219557]信息 – indexing.UnindexedFilesUpdater – 未索引文件更新开始:8个文件更新2017-10-21 11:18:37,556 [219774]信息 – .diagnostic。 PerformanceWatcher – 未索引文件更新耗时217毫秒; 一般的反应:好的; 美国东部时间响应:确定

这是我的模块:

@Module class MainModule(val activity: Activity) { @Provides fun providesContext(): Context = activity.baseContext @Provides fun providesActivity(): Activity = activity @Provides @MainScope fun providesView(activity: Activity): MainActivityView = MainActivityView(activity) @Provides @MainScope fun providesPresenter(view: MainActivityView): MainPresenter = MainPresenter(view)} 

MainScope:

  import javax.inject.Qualifier import javax.inject.Scope @Scope annotation class MainScope 

编辑

MainComponent:

 @Component(modules = arrayOf(MainModule::class), dependencies = arrayOf(ApplicationComponent::class)) public interface MainComponent{ fun inject(activity: MainActivity) } 

编辑2: 这是github上的整个项目