注释处理器是Java编译器的插件。注释处理器可以执行诸如分析声明,导致编译错误和生成新编译单元之类的操作。
Lombok 注解在 Spring Boot 项目 (Java 21) 中不起作用
我正在开发一个 Spring Boot 项目,使用 Lombok 生成样板代码,例如 getter、setter 和构造函数。尽管在 pom.xml 中具有正确的 Lombok 依赖项,但像
有没有办法让 Java 自定义注释处理器与 RetentionPolicy SOURCE 一起工作?
我创建了一个 Java 自定义注释处理器,以 RetentionPolicy 作为源,为我生成个性化代码,就像 Lombok 的 Getter & Setter 一样。 不幸的是它没有成功,因为
是否可以在注释处理器中获取枚举常量的构造函数参数的值? 我有一个枚举,它定义了一个构造函数并被扫描,因为它也被注释了。 @
我使用的是Intellij IDEA Community Edition(最新版本:Build #IC-242.23339.11,构建于2024年9月25日) 这是我的 build.gradle 文件: 插件{ id 'java' id 'org.springframework...
为什么当给定 int 原始类型时 directSupertypes(TypeMirror) 返回空列表?
如果我在表示 int 的 TypeMirror 上调用 javax.lang.model.util.Types#directSupertypes(TypeMirror) ,则生成的 List 为空。 Java 语言规范指出...的直接超类型...
我正在使用 Java 注释处理器,遇到 NullPointerException 并显示以下错误消息: 编译器(21.0.3)发生异常。请针对...
我参考了lombok.在jdk21中打开jdk.compile的方法,在注解处理器的初始化阶段打开jdk.complie 私有静态无效 addOpensForLombok() { C...
无法访问类 com.sun.tools.javac.api.JavacTrees(在 jdk.compiler 模块中)
我使用java21定制了一个注释处理程序。注释处理器所在项目的pom文件如下所示: 我使用 java21 定制了一个注释处理程序。注释处理器所在项目的pom文件如下所示: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.example</groupId> <artifactId>xxx-xx</artifactId> <version>1.0-SNAPSHOT</version> </parent> <artifactId>xxx-xx-xx</artifactId> <packaging>jar</packaging> <name>async-log-client</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <java.version>21</java.version> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>com.google.auto.service</groupId> <artifactId>auto-service</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>21</source> <target>21</target> <encoding>UTF-8</encoding> <compilerArgs> <arg>--add-exports=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED</arg> <arg>--add-exports=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED</arg> <arg>--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED</arg> <arg>--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED</arg> <arg>--add-exports=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED</arg> <arg>--add-exports=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED</arg> <arg>--add-exports=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED</arg> <arg>--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED</arg> <arg>--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED</arg> <arg>--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED</arg> </compilerArgs> </configuration> </plugin> </plugins> </build> </project> 我使用 mvn clean install 命令打包到本地存储库。当我将其用作其他项目的依赖项时,出现以下错误 class org.example.MyCustomProcessor (in unnamed module @0x3b48e183) cannot access class com.sun.tools.javac.api.JavacTrees (in module jdk.compiler) because module jdk.compiler does not export com.sun.tools.javac.api to unnamed module @0x3b48e183 我尝试在使用该自定义注释处理器的项目中导入 jdk 模块。 <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>21</source> <target>21</target> <encoding>UTF-8</encoding> <compilerArgs> <arg>--add-exports=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED</arg> <arg>--add-exports=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED</arg> <arg>--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED</arg> <arg>--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED</arg> <arg>--add-exports=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED</arg> <arg>--add-exports=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED</arg> <arg>--add-exports=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED</arg> <arg>--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED</arg> <arg>--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED</arg> <arg>--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED</arg> </compilerArgs> </configuration> </plugin> </plugins> </build> 但是好像还是不行。我的目标是构建一个类似 lombok 的注释处理器项目。其他项目可以直接依赖它来运行注释处理器 根据您提供的github上的项目,解决方案如下: pom.xml 将 google.auto.service.version 从 1.0 修改为 1.0-rc1 <properties> ... <google.auto.service.version>1.0-rc1</google.auto.service.version> ... </properties> AsyncLogProcessor.java async-log-main/async-log-client/src/main/java/org/example/async/log/client/annotation/AsyncLogProcessor.java 3号线 import com.google.auto.service.AutoService; 打开 auto-service-1.0.jar 并查找 /com/google/auto/service/。 AutoService.class 不存在。 打开 auto-service-1.0-rc1.jar 并查找 /com/google/auto/service/。 AutoService.class 存在。 只有1.0-rc1版本可以支持您的代码(导入com.google.auto.service.AutoService)
我目前正在尝试实现一个小型有趣的库,它通过使用阳极处理在编译时自动生成夹具类:https://github.com/floydkretschmar/fixturize/tree/main/
annotationProcessors 多模块项目 Java
我最近开始学习java处理器并尝试将它们与gradle一起使用, 当我构建项目时,我可以看到打印了注释处理器 jar(其他模块)(我在应用程序中添加了它
我有一个包含 1000 多个 Java 源文件的 Maven 模块。其中一些具有通过处理器 Dagger 和 Immutables 处理的注释,每个处理器都会生成代码。当我在 D 中出错时...
我首先选择放置一些 @NamedNativeQueries 的位置是定义数据传输对象(POJO,如果我使用它们的话可能是一条记录)的文件中。但 DTO 不是一个实体,所以 Hiber...
假设我的项目中有两个接口: 接口 接口A { // ... 接口监听器{ // ... } } 接口 接口B { // ... 接口监听器{ /...
如何使用注释处理器从 src/main/resources 读取文件?
我有一个简单的注释处理器,需要从与注释类相同的项目中读取配置文件。结构示例: - 我的项目 - 源代码 - 主要的 - 爪哇 ...
我正在实现一个注释处理器。我注意到存在一个名为 TypeKind.UNION 的 javax.lang.model.type.TypeKind 。这到底代表什么,又会如何遇到一个类型……
总体思路: 我想在 Gradle 和 Java 17(Gradle 7.5、Java 17.0.6)上构建一个简单的注释处理器。并在具有相同设置的另一个项目中使用它。 这是我的代码: 注释处理器
我正在使用 java 注释处理器根据项目中的注释生成代码,并且运行良好。我正在使用 AbstractProcessor,并像这样编写输出文件: 档案管理器...
嗨,我开始使用 gradle 在 Java 中学习注释处理,遵循多项目结构: 根 | |-sample # 包含主要类 |-annotation # 处理器读取的注释 |-处理器#
java.lang.annotation.AnnotationTypeMismatchException 尽管类型相同
由于上游依赖项发生一些变化,我最近不得不将项目从 Java 11 升级到 Java 17。该项目大量使用注释驱动的代码生成,自从升级以来,我
Android javax.annotation.processing 包丢失
我想根据以下链接中的示例进行一些注释处理:http://www.zdnetasia.com/writing-and-processing-custom-annotations-part-3-39362483.htm。 不过,我会...