1

动机

我想尝试编译时注释处理是否适合我的问题。它需要开箱即用,没有编译器参数等。


当前状态

我有:

  • 注释
  • 注释处理器
  • 一个包含这两者的 .jar 和一个 javax.annotation.processing.Processor 文件,该文件在 META-INF/services 中包含我的处理器的FQCN

应该发生什么:

  • 它应该自动检测处理器
  • 它应该处理注释并创建一个新类(WiredAnnotated)
  • 我应该能够在编译的一个步骤中使用这个类(而不是多个阶段)
  • 我不想让编辑器接受这个类的生成(例如AndroidAnnotations 也管理这个)

实际发生的情况:

  • 它自动检测处理器
  • 它创建了一个新类(在 out/production/*/generated/ 中)
  • 我可以使用这个类
    • 源代码看起来不错
    • 反编译的时候看起来也不错
  • 编辑器无法解析类(见截图)

我尝试了什么:

  • 重启 IntelliJ
  • 使缓存失效
  • 检查注释处理器的输出

截屏:

在此处输入图像描述

编译时,它实际上按预期工作。我想这与检查错误的目录有关。

有没有人知道我做错了什么?我是否错过了可以帮助您的信息?

在此先感谢,直到

4

1 回答 1

0

好吧,您需要将您添加out/production/*/generated/到项目源文件夹中。因此,IntelliJ 将了解您生成的类。

您可以通过右键单击目录 > 将目录标记为源根目录来实现。

或者

项目结构 (F4) > 模块 > 源选项卡 > 源文件夹应包含所有包含您的源代码的目录,生成一个包含。

在 android 中,根文件夹中有一个gendir,但请注意,它会发出蓝色或绿色的光,这意味着它被标记为 Source 文件夹,它在 Project structure > Modules 中也可见。它包含R和。BuildConfigManifest

于 2013-11-08T15:46:22.087 回答