在Eclipse 4.6 Neon中使用注释处理器

usr*_*ΛΩΝ 13 java eclipse annotations

我正在维护一个Java 7 Web项目,该项目使用多行注释来存储某些常量.

我可以在使用Mars时配置Eclipse,所以我可以在部署该应用程序的情况下启动Tomcat,它就像魅力一样......

直到我升级!现在,尽管配置完成,仍未完成注释处理.

我发现这个问题是由Eclipse 4.6的一个特性引起的,如此处所述

批处理编译器和IDE中支持Java 6批注处理器.按照设计,Java 6处理器仅在构建期间执行,而不是在编辑时执行.(bug 188558)

简而言之,链接的错误说明注释处理已经从Eclipse的增量编译中删除(可能是Build automatically???),这是出于合法的原因.事实上,当我使用Ant在CI服务器中编译项目时,注释会照常处理.

但我不能再在Eclipse中运行我的项目了.它完全取决于Multiline注释的正确处理.

到目前为止,我已尝试禁用该Build Automatically标志并手动构建项目.没有结果.

我也尝试Java Compiler -> Annotation processing -> Factory Path,选择multiline-stringjar,转到Advanced属性并取消选中Run this container's processors in batch mode,尽管复选框是违反直觉的(我的意思是,它应该被命名为"以增量模式运行"并且默认情况下未选中,根据上面提到的错误)

该应用程序是一个Web应用程序,因此每次尝试将其部署到本地Tomcat.

你觉得我能做些什么?

cyb*_*sam 0

一些建议:

  1. 您使用的多行注释仅支持 Java 版本 1.6。(例如,MultilineProcessor指定@SupportedSourceVersion(SourceVersion.RELEASE_6),推荐的 pom 设置指定sourcetarget1.6。)如果您的包是使用大于 1.6 的JDK 合规级别构建的,这可能就是注释被忽略的原因。
  2. 您可以将多行字符串硬编码到字符串变量,而不是使用该注释。它会使您的代码可读性较差,但构建速度会更快。

  • 是的,你是对的。出于可读性问题,我们选择不对字符串(HTML 模板)进行硬编码,但最终我决定从多行注释切换到使用类路径资源加载,从而将模板存储到格式化且可读的文件中。 (2认同)