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

问题描述 投票:1回答:2

我在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中的代码生成?还有什么要做或检查?

java eclipse annotations apt eclipse-luna
2个回答
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),并没有遇到过这样的问题。


0
投票

我有一个类似的问题,AutoValue注释没有用Eclipse 2019-3处理,OpenJDK 11作为目标运行时。在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环境变量上运行,请参阅here。我强制Eclipse通过向Eclipse.ini添加-vm参数来使用OpenJDK 11安装:

-vm
"C:\path\to\OpenJDK\bin\server\jvm.dll"
© www.soinside.com 2019 - 2024. All rights reserved.