Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android Studio 3.0中自定义注释处理器的NoClassDefFoundError_Java_Android_Annotations_Android Studio 3.0 - Fatal编程技术网

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

Java Android Studio 3.0中自定义注释处理器的NoClassDefFoundError,java,android,annotations,android-studio-3.0,Java,Android,Annotations,Android Studio 3.0,我有一个自定义的注释处理器,可以解析XML文件。它与Android Studio 2.3.3配合得很好,现在我已经将Android Studio升级到3.0版(稳定版),它突然开始为我的注释处理器的注释抛出NoClassDefFound错误 Error:Execution failed for task ':app:compileDebugJavaWithJavac'. > java.lang.NoClassDefFoundError: io/github/***/annotations/

我有一个自定义的注释处理器,可以解析XML文件。它与Android Studio 2.3.3配合得很好,现在我已经将Android Studio升级到3.0版(稳定版),它突然开始为我的注释处理器的注释抛出
NoClassDefFound
错误

Error:Execution failed for task ':app:compileDebugJavaWithJavac'.
> java.lang.NoClassDefFoundError: io/github/***/annotations/****
在格拉德尔

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

您必须迁移到新的android gradle插件:follow

在以前版本的插件中,编译类路径上的依赖项会自动添加到处理器类路径中。也就是说,您可以将注释处理器添加到编译类路径,它将按预期工作。但是,这会给处理器添加大量不必要的依赖项,从而对性能造成重大影响

Error:Execution failed for task ':app:compileDebugJavaWithJavac'.
> java.lang.NoClassDefFoundError: io/github/***/annotations/****
使用Android插件3.0.0时,必须使用annotationProcessor依赖项配置将注释处理器添加到处理器类路径,如下所示:

依赖项{
...
annotationProcessor'com.google.dagger:dagger编译器:'
}

好的。通过在
build.gradle
中将
includeCompileClasspath
设置为
true
,使其正常工作

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

    }
}

对我正在这样做。然后我们需要更多信息:注释(未找到)在编译jar中,对吗?你可以发一个链接到源代码吗?我可以在Android Studio中看到源代码。这可能有什么问题?类路径和processorpath是不同的:因此,如果您的注释的java文件仅在processorpath上,并且在java源文件中使用注释,编译将失败,因为将只搜索类路径谢谢您的回答。注释是独立的,作为编译时依赖项包含。我发现
compile
已被弃用,
implementation
compile
的新版本。我已经进行了此更新,但在编译时仍然找不到注释。请记住,his只是一个解决方法(现在处理器路径上有整个编译类路径),并且此功能将在将来删除。请参阅感谢通知。正确的方法是什么?我也应该用processor打包注释吗?不。注释应该在主库jar中(您将其添加到编译类路径中),处理器项目应该只声明对库jar的依赖关系(因为它也需要注释):如另一条注释中所述,这是其他项目所做的:例如,这就是我正在做的,但我仍然需要在类路径中添加处理器。我不知道Android Studio 3.0有什么问题。我很肯定,AS3.0没有什么问题。我将许多lib与注释处理器一起使用。问题很可能是批注处理器的问题。由于您无法发布源代码,因此我可以向您指出一些示例:例如,您可以尝试在示例项目中使用
不可变值
,然后将其与您自己的annotation processor项目进行比较。