Android Studio 3.0中自定义注释处理器的NoClassDefFoundError

时间:2017-10-26 12:56:30

标签: java android annotations android-studio-3.0

我有一个解析XML文件的自定义注释处理器。它与Android Studio 2.3.3一起工作正常,现在我已更新Android Studio to version 3.0(稳定),它突然开始为我的注释处理器的注释抛出NoClassDefFound错误。

Error:Execution failed for task ':app:compileDebugJavaWithJavac'.
> java.lang.NoClassDefFoundError: io/github/***/annotations/****

在Gradle

   compile  'io.github.allaudin:****:1.0.0'
   annotationProcessor  'io.github.allaudin:****-processor:1.0.0'

2 个答案:

答案 0 :(得分:3)

行。通过在includeCompileClasspath中将true设为build.gradle来实现它。

android {
    ...
    defaultConfig {
       ...
        javaCompileOptions {
            annotationProcessorOptions {
                includeCompileClasspath true
            }
        }

    }
}

答案 1 :(得分:0)

您必须迁移到新的Android gradle插件:关注these steps

  

在以前版本的插件中,编译类路径的依赖关系会自动添加到处理器类路径中。也就是说,您可以将一个注释处理器添加到编译类路径中,它将按预期工作。但是,这会通过向处理器添加大量不必要的依赖性而对性能产生重大影响。

     

使用Android插件3.0.0时,必须使用annotationProcessor依赖关系配置将注释处理器添加到处理器类路径,如下所示:

dependencies {
    ...
    annotationProcessor 'com.google.dagger:dagger-compiler:<version-number>'
}