Eclipse Luna不保留Annotation Processing生成的代码

时间:2015-01-05 14:09:55

标签: java eclipse annotations apt eclipse-luna

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

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

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

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

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

任何人都有幸在Eclipse中生成代码吗?还有别的事吗或检查?

2 个答案:

答案 0 :(得分:2)

  • 验证您的项目是否已设置为实际使用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的butterknife)并且没有遇到过这样的问题。

答案 1 :(得分:0)

我有一个类似的问题,就是使用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在Help -> About Eclipse IDE -> Installation Details -> Configuration指示的旧Java 8安装上运行。就我而言,Eclipse发现JRE在PATH环境变量上运行,请参见here。我通过在Eclipse.ini中添加-vm参数来强制Eclipse使用OpenJDK 11安装:

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