【问题标题】:Eclipse Luna not keeping code generated by Annotation ProcessingEclipse Luna 不保留注释处理生成的代码
【发布时间】:2015-01-05 14:09:55
【问题描述】:

我在 Ubuntu 14.10 (Utopic Unicorn) 下运行 Eclipse Luna (4.4.1),并且有一个项目使用注释处理来验证代码中的某些形式并生成实用程序代码。在eclipse中没有生成代码。

首先,处理器与 javac 完美配合。其次,处理器确实在 Eclipse 中运行。如果我改变它们以抛出异常 Eclipse 会报告。此外,如果我向处理器提供格式错误的代码(例如具有不同类型的 getter/setter 对),它会正确报告错误(红色曲线、正确的错误消息、整九码)。

.apt_generated 中没有代码出现,也没有生成类文件。

我尝试禁用它们并重新启用它们,开始一个新项目,在全新安装的 Eclipse 上尝试过,将项目版本从 1.7 更改为 1.8 并再次返回,尝试批处理模式而不是批处理模式,更改.apt_generated 目录,仔细检查了 .apt_generated 的权限,可能还有一些我不记得的东西。

此时我只是单独运行 javac 并考虑将其作为我们的第一个 Apache Ant 或 Maven 项目,如果这会有所帮助,但我宁愿不在这个时候。

有人在 Eclipse 中生成代码吗?还有什么事情要做或检查吗?

【问题讨论】:

    标签: java eclipse annotations apt eclipse-luna


    【解决方案1】:
    • 验证您的项目是否设置为实际使用 APT,如 https://www.eclipse.org/jdt/apt/introToAPT.php 所示。请注意,这些是项目设置,而不是工作区首选项。
    • 确保您可能生成的代码未被您工作流程的其他部分删除。例如。第二个处理器清理第一个处理器生成的目录。
    • 检查您在运行 Eclipse 和构建项目时使用的是 JDT 而不是 JRE。
    • 验证 org.eclipse.jdt.apt.core 是 Eclipse 安装的一部分,因为它是 JDT 的实际注释处理器集成。
    • 验证您的处理器有一个正确填充的文件META-INF/services/javax.annotation.processing.Processor,指向实现处理器的正确类。否则 Eclipse 可能会忽略它。

    话虽如此,多年来我在 Eclipse 中使用了不同的注释处理器(如 Android 的黄油刀),但没有遇到此类问题。

    【讨论】:

    • 正如我所说,处理器在 Eclipse 中运行。确认,因为处理器确实在代码中设置了错误Messager.printMessage()
    • 哦,为了减轻您的其他顾虑,另一个处理器正在破坏目录,我认为情况并非如此。不仅没有其他处理器在运行,而且当由 javac 填充时,即使在 eclipse 中完全重建也不会清除该目录。虽然不是绝对的证据,但我认为这是相当确凿的。
    【解决方案2】:

    我遇到了类似的问题,即使用 OpenJDK 11 作为目标运行时的 Eclipse 2019-3 未处理 AutoValue 注释。在 Eclipse “错误日志”面板中,我看到了这个错误:

    java.lang.Exception:java.lang.UnsupportedClassVersionError: javax/lang/model/element/ModuleElement 已由更新版本的 Java Runtime(类文件版本 53.0)编译,此版本的 Java Runtime 仅识别最高 52.0 的类文件版本

    Eclipse 在旧的 Java 8 安装上运行,如 Help -> About Eclipse IDE -> Installation Details -> Configuration 所示。在我的例子中,Eclipse 发现 JRE 在 PATH 环境变量上运行,请参阅here。我通过将 -vm 参数添加到 Eclipse.ini 来强制 Eclipse 使用 OpenJDK 11 安装:

    -vm "C:\path\to\OpenJDK\bin\server\jvm.dll"

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-13
      • 2010-12-14
      • 1970-01-01
      • 2011-02-15
      • 2011-11-14
      • 1970-01-01
      • 2015-03-13
      • 1970-01-01
      相关资源
      最近更新 更多