无法扩展 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" 模块并将其依赖项添加到您的主模块中。以下是对我有用的解决方案的逐步说明:
- 在您的 android 项目中创建一个新模块。右击你的项目 -> New -> Module -> select Java Library
- 按照说明添加模块名称、包名称等并完成
现在在此库中创建一个新的 class 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;
}
}
将 app/build.gradle 中的编译选项添加到 java 1.7。请参阅以下快照:
在您的主模块中添加这个新创建的模块的依赖项
编译并运行..!!
喜欢我的回答别忘了点个赞:)
我正在尝试开始创建一个 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" 模块并将其依赖项添加到您的主模块中。以下是对我有用的解决方案的逐步说明:
- 在您的 android 项目中创建一个新模块。右击你的项目 -> New -> Module -> select Java Library
- 按照说明添加模块名称、包名称等并完成
现在在此库中创建一个新的 class 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; } }
将 app/build.gradle 中的编译选项添加到 java 1.7。请参阅以下快照:
在您的主模块中添加这个新创建的模块的依赖项
编译并运行..!!
喜欢我的回答别忘了点个赞:)