注释处理器是Java编译器的插件。注释处理器可以执行诸如分析声明,导致编译错误和生成新编译单元之类的操作。
Maven/Java/Helidon MP:Log4j2.xml <JSONLayout>导致与自定义注释处理器发生冲突
我有一个多模块 Maven 项目。模块 A 有一个注释处理器,模块 B 在其 pom.xml 中依赖于模块 A。模块 B 还有一个 src/main/resources/META-INF/services/javax。
我在 Eclipse 中处理注释很困难,因为没有注释生成代码。 我尝试了几种解决方案: 检查 Java 中的注释处理下的“启用注释处理”
在下面的情况下,我想获取 MyString.class 的值,因为 @RendererType 在注释处理器执行内部的字段上具有值 TEXT 。 这是我的自定义注释: @保留...
目前我正在尝试创建一个注释处理器,它在被注释的类中创建一个名为 getValue 的方法。为此我创建了以下类: 包 ro.Gabriel.Annotati...
我想将 yolo 格式的标签转换为 coco 格式 我努力了 https://github.com/Taeyoung96/Yolo-to-COCO-format-converter 和 py标签 他们都有一个错误。 我想在 Detectron 2 上进行训练...
我编写了一个注释处理器,可以在编译期间直接为生成的源生成类。该类使用有效的语法生成,并且是正确的、匹配的(与接口
使用TypeVisitor访问java注解处理器中encapsulatedElement的返回值接口?
我目前正在构建一个注释处理器,我想过滤所有返回实现某个接口的记录的方法。 在 IntelliJ 调试窗口中,我可以看到 restype var...
javac 命令行 `-Akey[=value]` 参数不通过 javac 插件覆盖,仅通过注释处理器覆盖。如何最好地解决这个问题?
虽然 javac 文档声明 -Akey[=value] 命令行参数是为注释处理器设计的,但它也适用于 javac 插件;似乎没有单独的命令行
Android Studio >= 0.8.2 中缺少编译器选项
最近我将Android Studio升级到了0.8.2。现在,我的基于 android 注释的项目无法构建。似乎注释处理以某种方式被禁用。看来项目编译器已设置...
如何修复 ClassNotFoundException: org.springframework.boot.configurationprocessor.json.JSONObject 错误?
部署应用程序时出现以下错误: java.lang.reflect.InitationTargetException 在 java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(本机方法) 在 j...
上一轮创建的类型为[生成的java文件的路径]的文件将不会进行注释处理
我编写了一个 AnnotationProcessor,它扫描代码中的某个注释并从中生成一个 Java 类。 它基本上做了这样的事情: 私人多重地图 我编写了一个 AnnotationProcessor,它扫描代码中的某个注释并从中生成一个 Java 类。 它基本上做了这样的事情: private Multimap<String, Element> elements; @Override public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) { for (Element annotatedElement : roundEnv.getElementsAnnotatedWith(Factory.class)) { elements.put(annotatedElement.getSimpleName()); } generateCode(elements); } 以防万一它很重要: generateCode()将迭代elements(这是一个多重映射),并为每个键创建一个类(键+后缀是我想要生成的文件的名称),并使用根据元素列表的信息创建的代码(与 key 关联的某个 key 的 multimap 的值。 显然我会在每轮注释处理时调用generateCode()。因此,我会收到一个编译错误,表明在上一轮中已经生成了同名文件。 正确的处理方法是什么?我认为收集所有注释并仅在最后一轮生成类是个好主意,如下所示: private Multimap<String, Element> elements; @Override public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) { for (Element annotatedElement : roundEnv.getElementsAnnotatedWith(Factory.class)) { elements.put(annotatedElement.getSimpleName()); } if (roundEnv.processingOver()){ generateCode(elements); } } 这解决了多次生成相同文件的问题,但现在我收到以下警告: 警告:java:上一轮创建的类型为[生成的java文件的路径]的文件将不会进行注释处理。 javadoc 指出您不应该在上一轮中生成代码。 我应该什么时候生成我的文件? 此外,如果我单击重建项目,我也会在 IntelliJ 14 中收到此警告: 警告:输出路径 [生成的 java 文件的路径] 与源根目录相交。只有由构建创建的文件才会被清理。 如果您为每个密钥生成单个文件,我想您只需将代码重写为如下所示: 警告: 伪代码 private Multimap<String, Element> elements; private Set<String> files = new HashSet<String>(); @Override public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) { for (Element annotatedElement : roundEnv.getElementsAnnotatedWith(Factory.class)) { elements.put(annotatedElement.getSimpleName()); } for (Element e : elements) { String file = resolveFile(e); if (files.contains(file)) continue; generateCodeForFile(file, e); files.add(file); } }
Java 注释处理器将方法返回 `TypeMirror` 与已知类进行比较
我的 Java 注释处理器正在生成接口的实现,该接口有一个返回 CompletableFuture 的 MyInterface.foo() 方法。在我的处理器中,ExecutableElement 为
假设我有一个注释@Foo,它指示一些其他类,如下所示: @Foo({Other.class, Another.class}) 公共类我的类{... …… } 我正在为 Foo 编写一个注释处理器,并且......
Java,在编译时使用注释处理器索引注释类是一个很好的实践吗?
我正在考虑使用注释处理器在编译时为用某种注释类型注释的类建立索引(甚至是存储在文件中的简单列表),以加快...
Spring boot Gradle Build Java编译器问题java.lang.IllegalStateException: endPosTable已经设置
我在运行 gradle build 时遇到 java 编译器问题。当我在本地重新运行它时它就过去了。但我无法在詹金斯上重新运行,并且构建总是失败。 等级版本:6.9 爪哇1.8 弹簧靴...
IntelliJ 增量 Maven 使用注释和 APT 进行构建
Gradle 现在支持增量注释处理,但我认为这对那些在 IntelliJ 中使用 Maven 项目的人没有帮助。当我谷歌搜索时,我发现了一些对 IntelliJ 和增量的引用
当拥有 jvm 目标时,Kotlin 多平台中的注释处理可以使用 kapt 完成。 但是如果没有 jvm 目标,如何处理注释呢? 具体来说,我想生成代码...
CustomValue 注解处理:如何创建 @Value 的类似注解
我刚刚开始使用注释处理并尝试将值注入到用我的注释注释的字段上。从昨天开始我就遇到了这个错误消息:编译失败 我有...
假设我的项目中有两个接口: 接口 接口A { // ... 接口监听器{ // ... } } 接口 接口B { // ... 接口监听器{ /...
Eclipse/ SpringSTS 使用 Spring 和 Lombok.jar 的代码支持非常慢
所以,首先这种情况只发生在我们使用 lombok.jar 的 Java 项目中。该项目有超过 1900 个 Java 文件。现在,当我按下键盘上的 [CTRL+空格键] 时,或者当我...