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

时间:2016-03-16 00:13:04

标签: java annotation-processing

我正在尝试开始创建一个javax注释处理器,我现在正在从android工作室做这件事。我只需要我认为的gradle依赖。现在在gradle我有以下我尝试过:

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

但是当我尝试构建以下类时,它说它无法找到AbstractProcessor类:

class MyAnnotationProcessor extends AbstractProcessor{
}

如何识别这门课程?

这是确切的错误:

enter image description here

我的导入如下:

enter image description here

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

2 个答案:

答案 0 :(得分:7)

在Android库模块中无法访问AbstractProcessor。为了使它工作,你可以创建一个单独的" java库"模块并在主模块中添加其依赖项。以下是对我有用的解决方案的逐步描述:

  1. 在Android项目中创建一个新模块。右键单击您的项目 - >新 - >模块 - >选择Java库
  2. 按照说明添加模块名称,包名称等,然后完成
  3. 现在在此库中创建一个新类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。看下面的快照: enter image description here

  6. 在主模块中添加此新创建的模块的依赖关系

  7. 编译并运行.. !!

  8. 如果你喜欢我的回答,请不要忘记投票:)

答案 1 :(得分:-2)

我遇到了同样的问题,我找到了解决方案。请参阅以下链接:

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

https://stackoverflow.com/a/32933935/3899061