annotation-processing 相关问题

注释处理器是Java编译器的插件。注释处理器可以执行诸如分析声明,导致编译错误和生成新编译单元之类的操作。

Gradle 注释处理器依赖项

总体思路: 我想在 Gradle 和 Java 17(Gradle 7.5、Java 17.0.6)上构建一个简单的注释处理器。并在具有相同设置的另一个项目中使用它。 这是我的代码: 注释处理器

回答 2 投票 0

使用Java的注释处理器生成测试源

我正在使用 java 注释处理器根据项目中的注释生成代码,并且运行良好。我正在使用 AbstractProcessor,并像这样编写输出文件: 档案管理器...

回答 1 投票 0

注释处理器生成像lombok这样的类

嗨,我开始使用 gradle 在 Java 中学习注释处理,遵循多项目结构: 根 | |-sample # 包含主要类 |-annotation # 处理器读取的注释 |-处理器#

回答 1 投票 0

java.lang.annotation.AnnotationTypeMismatchException 尽管类型相同

由于上游依赖项发生一些变化,我最近不得不将项目从 Java 11 升级到 Java 17。该项目大量使用注释驱动的代码生成,自从升级以来,我

回答 1 投票 0

Android javax.annotation.processing 包丢失

我想根据以下链接中的示例进行一些注释处理:http://www.zdnetasia.com/writing-and-processing-custom-annotations-part-3-39362483.htm。 不过,我会...

回答 10 投票 0

解析 Javadoc 时链接的完全限定类名

在 Java 注释处理器中,我使用 DocTrees#getDocCommentTree(Element) 来获取 DocCommentTree,我与访问者一起走过它。为找到的{...

回答 1 投票 0

Maven/Java/Helidon MP:Log4j2.xml <JSONLayout>导致与自定义注释处理器发生冲突

我有一个多模块 Maven 项目。模块 A 有一个注释处理器,模块 B 在其 pom.xml 中依赖于模块 A。模块 B 还有一个 src/main/resources/META-INF/services/javax。

回答 1 投票 0

Eclipse IDE 中未生成注释

我在 Eclipse 中处理注释很困难,因为没有注释生成代码。 我尝试了几种解决方案: 检查 Java 中的注释处理下的“启用注释处理”

回答 1 投票 0

是否可以从注释处理器内部获取与枚举关联的值?

在下面的情况下,我想获取 MyString.class 的值,因为 @RendererType 在注释处理器执行内部的字段上具有值 TEXT 。 这是我的自定义注释: @保留...

回答 1 投票 0

使用注释处理器创建动态方法

目前我正在尝试创建一个注释处理器,它在被注释的类中创建一个名为 getValue 的方法。为此我创建了以下类: 包 ro.Gabriel.Annotati...

回答 1 投票 0

如何将yolo注释转换为coco格式。杰森?

我想将 yolo 格式的标签转换为 coco 格式 我努力了 https://github.com/Taeyoung96/Yolo-to-COCO-format-converter 和 py标签 他们都有一个错误。 我想在 Detectron 2 上进行训练...

回答 2 投票 0

运行java程序时在自定义注释处理器生成的生成源中找不到类

我编写了一个注释处理器,可以在编译期间直接为生成的源生成类。该类使用有效的语法生成,并且是正确的、匹配的(与接口

回答 1 投票 0

使用TypeVisitor访问java注解处理器中encapsulatedElement的返回值接口?

我目前正在构建一个注释处理器,我想过滤所有返回实现某个接口的记录的方法。 在 IntelliJ 调试窗口中,我可以看到 restype var...

回答 1 投票 0

javac 命令行 `-Akey[=value]` 参数不通过 javac 插件覆盖,仅通过注释处理器覆盖。如何最好地解决这个问题?

虽然 javac 文档声明 -Akey[=value] 命令行参数是为注释处理器设计的,但它也适用于 javac 插件;似乎没有单独的命令行

回答 1 投票 0

Android Studio >= 0.8.2 中缺少编译器选项

最近我将Android Studio升级到了0.8.2。现在,我的基于 android 注释的项目无法构建。似乎注释处理以某种方式被禁用。看来项目编译器已设置...

回答 3 投票 0

如何修复 ClassNotFoundException: org.springframework.boot.configurationprocessor.json.JSONObject 错误?

部署应用程序时出现以下错误: java.lang.reflect.InitationTargetException 在 java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(本机方法) 在 j...

回答 2 投票 0

上一轮创建的类型为[生成的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); } }

回答 1 投票 0

Java 注释处理器将方法返回 `TypeMirror` 与已知类进行比较

我的 Java 注释处理器正在生成接口的实现,该接口有一个返回 CompletableFuture 的 MyInterface.foo() 方法。在我的处理器中,ExecutableElement 为

回答 1 投票 0

Java注释处理器通过类名检查发现类型的注释

假设我有一个注释@Foo,它指示一些其他类,如下所示: @Foo({Other.class, Another.class}) 公共类我的类{... …… } 我正在为 Foo 编写一个注释处理器,并且......

回答 1 投票 0

Java,在编译时使用注释处理器索引注释类是一个很好的实践吗?

我正在考虑使用注释处理器在编译时为用某种注释类型注释的类建立索引(甚至是存储在文件中的简单列表),以加快...

回答 4 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.