【问题标题】:Working with annotation processors in Eclipse 4.6 Neon在 Eclipse 4.6 Neon 中使用注释处理器
【发布时间】:2016-07-21 13:08:16
【问题描述】:

我正在维护一个使用 multiline annotation 存储某些常量的 Java 7 Web 项目。

当我使用 Mars 时,我可以很好地配置 Eclipse,所以我可以启动 Tomcat 并部署该应用程序,它就像一个魅力......

直到我升级! 尽管configuration,现在没有进行注释处理。

我发现这个问题是由于 Eclipse 4.6 的一个特性造成的,正如文档中的 here

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

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

但是我不能再在 Eclipse 中运行我的项目了。这完全取决于Multiline注解的正确处理。

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

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

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

你觉得我能做些什么?

【问题讨论】:

  • 转向 Eclipse 论坛/社区?我认为这很特别,以至于在这里得到一个好的答案的机会不会太大。最好与拥有该产品的人交谈。
  • 这个问题有解决办法吗?
  • 您的问题找到解决方案了吗?
  • 我通过加载类路径资源杀死了注释处理工具

标签: java eclipse annotations


【解决方案1】:

几个建议:

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

【讨论】:

  • 是的,你是对的。出于可读性问题,我们选择不对字符串(HTML 模板)进行硬编码,但最终我决定从多行注释切换到使用 Classpath 资源加载,从而将模板存储到格式化且可读的文件中。
  • 提醒一下,如果您认为我的回答值得获得赏金,您需要尽快将其奖励给我;如果没有,没问题。 stackoverflow.com/help/bounty
  • 你应该提到@VolkerK :-)
  • 我没有打开赏金。用户 VolkerK 做到了。因此,如果您评论答案,那么我会收到通知,但我只能授予您接受的标志,而不是赏金。虽然我已经解决了我的问题,但您的回答并没有为我的问题提供真正的answer,所以我目前并不急于接受它;-) 无意冒犯
  • 啊。我没有想到检查是否有人设置了赏金。似乎设置赏金的人也应该自动收到通知,因为那个人有点“接受”这个问题,并且真的非常想知道答案。
猜你喜欢
  • 2014-02-21
  • 2015-08-10
  • 1970-01-01
  • 2017-01-18
  • 2017-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-25
相关资源
最近更新 更多