繁体   English   中英

Eclipse Luna不保留由注释处理生成的代码

[英]Eclipse Luna not keeping code generated by Annotation Processing

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

首先,处理器与javac完美配合。 其次,处理器必须在Eclipse中运行。 如果我更改它们以引发异常,Eclipse将报告该异常。 同样,如果我为处理器提供格式错误的代码(例如具有不同类型的getter / setter对),则它会正确报告错误(红色花键,正确的错误消息,整个9码)。

没有代码显示在.apt_generation中,也不生成类文件。

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

在这一点上,我只是单独运行javac,并考虑将其作为我们的第一个Apache Ant或Maven项目,如果这样做会有所帮助,但我不愿在此紧要关头。

有人在Eclipse中生成代码有运气吗? 还有其他事情要做或检查吗?

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

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

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

java.lang.Exception: java.lang.UnsupportedClassVersionError:
javax/lang/model/element/ModuleElement has been compiled by a more recent version of the Java Runtime (class file version 53.0), this version of the Java Runtime only recognizes class file versions up to 52.0

Eclipse在旧的Java 8安装上运行,如Help -> About Eclipse IDE -> Installation Details -> Configuration 就我而言,Eclipse发现JRE在PATH环境变量上运行,请参见此处 通过将-vm参数添加到Eclipse.ini,我强制Eclipse使用OpenJDK 11安装:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM