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

unable to extend AbstractProcessor to create java annotation processor

我正在尝试开始创建一个 javax 注释处理器,目前我是在 android 工作室中进行的。我只需要我认为的 gradle 依赖。现在在 gradle 我尝试了以下内容:

provided 'javax.annotation:jsr250-api:1.0'

但是当我尝试构建以下内容时 class 它说找不到 AbstractProcessor class:

class MyAnnotationProcessor extends AbstractProcessor{
}

我如何让它识别这个 class?

这里是准确的错误:

我的导入看起来像这样:

这是我的 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)

我遇到了同样的问题,并且找到了解决方案。请参阅下面的 link:

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

AbstractProcessor 在 android 库模块中不可访问。要使其工作,您可以创建一个单独的 "java library" 模块并将其依赖项添加到您的主模块中。以下是对我有用的解决方案的逐步说明:

  1. 在您的 android 项目中创建一个新模块。右击你的项目 -> New -> Module -> select Java Library
  2. 按照说明添加模块名称、包名称等并完成
  3. 现在在此库中创建一个新的 class CustomAnnotationProcessor 并扩展 AbstractProcessor

  4. 以下是我的自定义注释处理器的快照:

    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;
    }
    }
    
  5. 将 app/build.gradle 中的编译选项添加到 java 1.7。请参阅以下快照:

  6. 在您的主模块中添加这个新创建的模块的依赖项

  7. 编译并运行..!!

喜欢我的回答别忘了点个赞:)