【问题标题】:Java annotation processing intellij need to compile twiceJava注解处理intellij需要编译两次
【发布时间】:2017-05-09 01:13:44
【问题描述】:

我正在开发一个注释处理器来生成一些代码,但我遇到了一些编译问题。

我希望能够在触发生成的带注释的接口所在的同一模块中使用生成的类。

这在删除所有生成的源之后的第一次编译时不起作用,尽管我认为应该在编译其他源之前运行注释处理。 因此,对生成源的引用在第一次运行时会产生错误,说明生成的包不存在。 在第二次运行时,一切都编译正常,但我怀疑使用的是前一次运行生成的源代码,而不是新生成的源代码。

我可能缺少一些配置它的机制吗?或者这是预期的行为?

【问题讨论】:

    标签: java intellij-idea annotation-processing


    【解决方案1】:

    这里描述了问题及其解决方案:https://code.google.com/p/acris/wiki/CodeGenerationPlatform_Pitfall_Rounds

    关键是代码生成用

    if (!roundEnv.processingOver()) { ... }
    

    以避免在最后一轮编译器中更改生成的文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-06
      • 2012-10-03
      • 2020-08-28
      • 1970-01-01
      相关资源
      最近更新 更多