Findbugs注解 - 我的部署代码中需要annotation.jar和jsr305.jar吗?

18
所以,我想使用findbugs注释来抑制我们认为是正常代码的警告。
我们需要在生产运行时部署annotation.jar和jsr305.jar吗?还是我们只需要将这些jar文件放在Eclipse项目和Unix构建环境的类路径中?
2个回答

11

注解具有不同的保留策略

  • SOURCE - 不在类文件中,在编译器中被丢弃(在运行时不需要)
  • CLASS - 在类文件中,但VM可以将其丢弃
  • RUNTIME - 在运行时反射可用

逻辑表明,SOURCE保留策略的注解在运行时不需要,CLASS应该不需要,而RUNTIME必须可用。

快速查看JSR 305注解表明它们使用RUNTIME保留策略(例子),这提示我这些JAR文件确实需要在运行时加载类以满足注解合同。

但我没有亲自测试过这一点。


1
Alex,感谢您引导我走上了注释正确之路。我仅计划使用edu.umd.cs.findbugs.annotations.SuppressWarnings注释,该注释具有CLASS保留方式。在接下来的几天里,我将尝试将一些带注释的文件推荐到构建和运行环境中进行测试。 - tinman
1
这是不幸的错误。正如Matt McHenry指出,这些注释在运行时不需要存在。 - barfuin

8

根据我的相关问题,即使其中一些注释具有@Retention(RUNTIME),如果在运行时这些注释不存在,通常情况下您不会遇到任何问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接