问题标签 [annotation-processor]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
131 浏览

java - 如何在注释处理器中访问封闭元素的变量注释?

我正在为我们的 API 优化创建一串数据类,如下所示

数据类例如:

想要的结果:

{“cast_id”:1,“名称”:1,“profile_path”:1}

但目前能够生成它

"{"castId":1, "name":1, "profilePath":1}"

我想访问@JSON(或@SerializedName)注解及其值,我如何获得它?

然后使用 Kotlin 诗人用这个字符串 init 创建类。

0 投票
0 回答
94 浏览

java - 如何在 IntelliJ 中运行自定义注释处理器

我有一个注释check.java和注释处理器CheckProcessor.java,我已经编写并导出到一个 jar 文件check.jar

我也有Test.java一个小类来测试注释。javac -cp check.jar Test.java在命令行上运行。

我无法让它在 IntelliJ 中工作。我已添加check.jar为外部库。@check注解可以在没有编译错误的情况下使用,但注解处理器永远不会运行。

我在Settings-> Build, Execution, Deployment-> Compiler->下启用了注释处理Annotation Processors,并提供了一个直接指向 jar 文件的自定义处理器路径

0 投票
0 回答
52 浏览

kotlin - 使用 kotlinpoet 从现有文件创建 TypeSpec

我需要复制标有注释的类,然后将我自己的代码添加到其中。

标有我的注释的类:

生成的类:

到目前为止,我只看到一种方法:遍历现有类中的所有字段、方法等,并将它们添加到TypeSpec。ClassBuilder(),但我认为这太难了。

有没有更简单的方法,也许是图书馆?

0 投票
0 回答
59 浏览

java - 通过注释处理器中的 AST(抽象语法树)更改方法主体

如何使用 AST 更改方法主体?

例如,让我们学习这个类:

我们需要使用 AST 在方法体中添加一行:

我尝试了很多方法,但我从未设法改变方法体。我希望能得到你的帮助!

0 投票
0 回答
27 浏览

java - 原因:android-apt 插件与 Android Gradle 插件不兼容。请改用“annotationProcessor”配置

从标题可以看出,我是安卓新手。我正在使用 Android studio 4.1.2 并尝试测试一个旧应用程序(因为我正在学习的 android 课程很旧,但到目前为止它一直很有用)。无论如何,我在堆栈流上看到了很多具有相同错误的问题,并且我尝试实现人们提供的每个解决方案,但没有一个对我有用。有没有善良的灵魂可以帮助我?这是我的毕业生:

项目:

模块:

提前致谢

0 投票
1 回答
59 浏览

eclipse - 如何为 Eclipse 创建自定义注释处理器

我正在尝试创建一个在编译时生成代码的自定义注释处理器(就像 hibernate-jpamodelgen 所做的那样)。我在网上查看过,我发现自定义注释处理器可以与 maven 一起使用,但在添加到“注释处理”>“工厂路径”选项时什么也不做。我怎样才能以这种方式创建兼容的处理器?我还没有找到有效的教程。

例如,我的想法是注释一个实体以自动生成一个基本 DTO、一个基本映射器等,这些可以扩展以在最终代码中使用。

谢谢你们

0 投票
0 回答
29 浏览

java - 如何在不同项目中使用库的注释处理器中定义的注释?

以下是我的注释定义,

我有一个扩展AbstractProcessor的ErrorMapProcessor

在我的 gradle 文件中添加了以下内容,

我能够构建这个项目并将这个 jar 添加到另一个项目的类路径(build.gradle)中。在将 ErrorMapProcessor 添加到类路径后,我还可以在不同的项目中使用它生成的类。

但是即使在将框架 jar 添加到类路径之后,我也无法在新项目中使用@ErrorMap@ErrorSet注释。如何为不同的项目启用 @ErrorMap 和 @ErrorSet?

0 投票
0 回答
82 浏览

maven - 与 module-info.java 相关的 Vert.x 注释处理器问题

我正在尝试在 Java 中创建一个由多个模块组成的新项目(遵循 Java 9 中引入的 Java 模块概念)。在其中一个模块中,我正在尝试使用 vert.x codegen 生成将公开给其他模块的服务。

现在的问题是,当我尝试编译服务模块时,出现以下错误:

module-info.java:[5,22] 未找到模块:io.vertx.codegen。

供您参考,我将放置我的模块配置(如 module-info.java 中所述)和我的 POM 文件。

模块信息.java:

我的pom:

通过上面的检查,我在 POM 文件中添加了必要的导入,并根据需要在 module-info.java 中添加了包含 vert.x 模块。

不,我的问题是,我能做些什么来解决这个编译问题?我的 POM 或 module-info.java 上是否缺少任何内容?

0 投票
1 回答
95 浏览

intellij-idea - 无法解析注释处理器生成的方法

我有两个项目。其中之一是projectA注释处理器。第二个,projectB用作projectA依赖项。现在这个处理器是toJson在最终编译之前添加到存在类的方法。一切正常。当我编译projectBprojectA的运行并修改存在的源文件和添加toJson方法时。此外,intellij 会自动检测此处理器并自动将我的自定义处理器配置到处理器路径。但编辑给出错误Cannot resolve method 'toJson' in 'CacheData'。我该如何解决这个问题?

下图是我的 intellij 配置。如您所见,IDEA 会自动从我的 pom.xml 中检测到我的处理器,但编辑器无法识别生成的代码 智能配置

我使用IntelliJ IDEA 2021.3 (Ultimate Edition), maven-3.8.1,jdk-1.8表示处理器(projectAjdk-11projectB

0 投票
0 回答
21 浏览

java - 注释处理器可以生成一个属于另一个 NestMember 的类吗?

目前可以从注释处理器生成字节码。但是,根据我的实验,即使字节码包含 NestHost 属性,带注释的类也不会将生成的类添加到 NestMember 属性中。

在运行时使用隐藏类,可以将其声明为 MethodHandles.Lookup.ClassOption.NESTMATE,然后它就可以工作了。

但是有没有办法告诉编译器生成的类 Y 是 X 的嵌套成员?

(我正在开发一个注释处理器,它允许指定方法的字节码。因此它会生成一个新类并使用指定的字节码创建一个方法。但是,由于我们不能将该类声明为另一个类的 InnerClass,我我希望能够访问私有字段/方法是另一个 NestMember - https://github.com/Thihup/bytecode-annotation-processor