当前位置: 首页 > 知识库问答 >
问题:

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

束帅
2023-03-14
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)

共有2个答案

柳培
2023-03-14

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

  • 从项目布局中完全删除Java模块

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

拓拔玺
2023-03-14

在android库模块中无法访问抽象处理器。为了让它工作,你可以创建一个单独的“java库”模块,并在你的主模块中添加它的依赖关系。以下是对我有效的解决方案的逐步描述:

>

  • 在你的android项目中创建一个新模块。右键点击您的项目-

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

    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;
    }
    }
    

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

    编译并运行...!!

    如果你喜欢我的答案,别忘了投赞成票:)

  •  类似资料:
    • 问题内容: 我正在尝试为局部变量创建注释。我知道我不能在生成的字节码中保留注释,但是我应该能够在编译时通过执行以下操作来访问信息: 仅,当我在以下指定的受支持类型中指定包含“垃圾”的ProcessorFactory时,apt或javac不会对此进行处理: 但是,当我之前移动@Junk批注时,它将起作用 有想法或解决方法? 问题答案: 做了一些快速测试并进行了一些搜索,看起来好像并没有真正被支持。

    • 需要注释处理器的帮助。我创建了一个简单的注释处理器,它使用@autoservice注释来检查注释的字段是否为最终字段。但它没有显示任何编译时错误。这是我的配置 注释: 注释处理器: pom文件: 测试文件:

    • 我正在使用注释处理器来处理方法参数的注释。 用于参数的注释类型有一个注释@参数 现在,当注释处理器运行时,我想检查参数注释()是否有参数注释。我通过执行以下代码来实现这一点。 由于某种原因,arg始终为空。是否有注释未返回的原因?

    • 我使用抽象处理器创建了一个自定义注释和注释处理器。这意味着我想在编译之前进行注释处理。我将自定义注释和处理器导出为Jar,并尝试将其与简单的java测试程序一起使用。我确信在编译时它会找到我的java处理器类,但不知何故,我并没有得到我在控制台上期望的o/p。下面是我的处理器中处理方法的代码。 此外,我故意使用以便我得到一个版本警告,它确认当我执行一个测试类时,它找到了我的注释处理器。 这里是我的

    • 无效: 有效: (运输是抽象的) 顺便说一句,我的所有jaxb类都在同一个包中,并且我的JaxbContext是针对这个包配置的。

    • 我在编译使用我的注释处理器的代码时收到以下错误: 关于如何调试这个有什么提示吗?错误输出根本没有用处。有没有办法得到更详细的错误?