Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.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
无法扩展AbstractProcessor以创建java注释处理器_Java_Annotation Processing - Fatal编程技术网

无法扩展AbstractProcessor以创建java注释处理器

无法扩展AbstractProcessor以创建java注释处理器,java,annotation-processing,Java,Annotation Processing,我正在尝试创建一个javax注释处理器,现在我正在androidstudio中创建。我只是需要一种我认为合适的渐变依赖。现在在格拉德尔,我尝试了以下几点: provided 'javax.annotation:jsr250-api:1.0' 但当我尝试构建以下类时,它表示找不到AbstractProcessor类: class MyAnnotationProcessor extends AbstractProcessor{ } 如何让它识别这个类 下面是确切的错误: 我的导入内容如下所示:

我正在尝试创建一个javax注释处理器,现在我正在androidstudio中创建。我只是需要一种我认为合适的渐变依赖。现在在格拉德尔,我尝试了以下几点:

provided 'javax.annotation:jsr250-api:1.0'
但当我尝试构建以下类时,它表示找不到AbstractProcessor类:

class MyAnnotationProcessor extends AbstractProcessor{
}
如何让它识别这个类

下面是确切的错误:

我的导入内容如下所示:

这是我的java版本:

 $java -version 
Picked up JAVA_TOOL_OPTIONS: -Xmx512m -Xms64m
java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)

我遇到了同样的问题,我找到了解决办法。请参阅下面的链接:

  • 从项目布局中完全删除Java模块
  • 确保只有您的代码存活下来,删除模块目录中的所有其他内容(或者只删除.iml文件就足够了?)
  • 再次将源代码添加为模块Java库。现在一切都应该开始了

android库模块中无法访问AbstractProcessor。要使其工作,您可以创建一个单独的“java库”模块,并在主模块中添加其依赖项。以下是解决方案的分步说明,该解决方案对我有效:

  • 在android项目中创建一个新模块。右键单击项目->新建->模块->选择Java库
  • 按照说明添加模块名、包名等并完成
  • 现在在此库中创建一个新类CustomAnnotationProcessor并扩展AbstractProcessor

  • 以下是自定义批注处理器的快照:

    import java.util.Set;
    import javax.annotation.processing.AbstractProcessor;
    import javax.annotation.processing.RoundEnvironment;
    import javax.lang.model.element.TypeElement;
    
    public class CustomAnnotationProcessor extends AbstractProcessor{
    @Override
    public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
    return false;
    }
    }
    
    import java.util.Set;
    导入javax.annotation.processing.AbstractProcessor;
    导入javax.annotation.processing.RoundEnvironment;
    导入javax.lang.model.element.TypeElement;
    公共类CustomAnnotationProcessor扩展了AbstractProcessor{
    @凌驾
    
    公共布尔过程(设置你的类中有导入吗?你有什么版本的jdk?我在java 6上输入了导入,但它没有被识别。共享整个类?共享确切的错误消息?我发送了一张问题的照片。似乎有人不相信你在使用java 8。你的IDE可能指向旧版本的jdk?你不需要任何使用AbstractProcessor的依赖项——它是Java附带的。那么,有可能生成一个包含Android类的文件吗?花了几个小时!谢谢UUU:)