问题标签 [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.
java - 如何在注释处理器中访问封闭元素的变量注释?
我正在为我们的 API 优化创建一串数据类,如下所示
数据类例如:
想要的结果:
{“cast_id”:1,“名称”:1,“profile_path”:1}
但目前能够生成它
"{"castId":1, "name":1, "profilePath":1}"
我想访问@JSON(或@SerializedName)注解及其值,我如何获得它?
然后使用 Kotlin 诗人用这个字符串 init 创建类。
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 文件的自定义处理器路径
kotlin - 使用 kotlinpoet 从现有文件创建 TypeSpec
我需要复制标有注释的类,然后将我自己的代码添加到其中。
标有我的注释的类:
生成的类:
到目前为止,我只看到一种方法:遍历现有类中的所有字段、方法等,并将它们添加到TypeSpec。ClassBuilder(),但我认为这太难了。
有没有更简单的方法,也许是图书馆?
java - 通过注释处理器中的 AST(抽象语法树)更改方法主体
如何使用 AST 更改方法主体?
例如,让我们学习这个类:
我们需要使用 AST 在方法体中添加一行:
我尝试了很多方法,但我从未设法改变方法体。我希望能得到你的帮助!
java - 原因:android-apt 插件与 Android Gradle 插件不兼容。请改用“annotationProcessor”配置
从标题可以看出,我是安卓新手。我正在使用 Android studio 4.1.2 并尝试测试一个旧应用程序(因为我正在学习的 android 课程很旧,但到目前为止它一直很有用)。无论如何,我在堆栈流上看到了很多具有相同错误的问题,并且我尝试实现人们提供的每个解决方案,但没有一个对我有用。有没有善良的灵魂可以帮助我?这是我的毕业生:
项目:
模块:
提前致谢
eclipse - 如何为 Eclipse 创建自定义注释处理器
我正在尝试创建一个在编译时生成代码的自定义注释处理器(就像 hibernate-jpamodelgen 所做的那样)。我在网上查看过,我发现自定义注释处理器可以与 maven 一起使用,但在添加到“注释处理”>“工厂路径”选项时什么也不做。我怎样才能以这种方式创建兼容的处理器?我还没有找到有效的教程。
例如,我的想法是注释一个实体以自动生成一个基本 DTO、一个基本映射器等,这些可以扩展以在最终代码中使用。
谢谢你们
java - 如何在不同项目中使用库的注释处理器中定义的注释?
以下是我的注释定义,
我有一个扩展AbstractProcessor的ErrorMapProcessor类
在我的 gradle 文件中添加了以下内容,
我能够构建这个项目并将这个 jar 添加到另一个项目的类路径(build.gradle)中。在将 ErrorMapProcessor 添加到类路径后,我还可以在不同的项目中使用它生成的类。
但是即使在将框架 jar 添加到类路径之后,我也无法在新项目中使用@ErrorMap或@ErrorSet注释。如何为不同的项目启用 @ErrorMap 和 @ErrorSet?
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 上是否缺少任何内容?
intellij-idea - 无法解析注释处理器生成的方法
我有两个项目。其中之一是projectA
注释处理器。第二个,projectB
用作projectA
依赖项。现在这个处理器是toJson
在最终编译之前添加到存在类的方法。一切正常。当我编译projectB
我projectA
的运行并修改存在的源文件和添加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
表示处理器(projectA
)jdk-11
和projectB
java - 注释处理器可以生成一个属于另一个 NestMember 的类吗?
目前可以从注释处理器生成字节码。但是,根据我的实验,即使字节码包含 NestHost 属性,带注释的类也不会将生成的类添加到 NestMember 属性中。
在运行时使用隐藏类,可以将其声明为 MethodHandles.Lookup.ClassOption.NESTMATE,然后它就可以工作了。
但是有没有办法告诉编译器生成的类 Y 是 X 的嵌套成员?
(我正在开发一个注释处理器,它允许指定方法的字节码。因此它会生成一个新类并使用指定的字节码创建一个方法。但是,由于我们不能将该类声明为另一个类的 InnerClass,我我希望能够访问私有字段/方法是另一个 NestMember - https://github.com/Thihup/bytecode-annotation-processor)