18

所以,我想使用 findbugs 注释来抑制我们认为可以的代码的警告。

我们是否需要将 annotation.jar 和 jsr305.jar 部署到我们的生产运行时,或者我们只需要在 Eclipse 项目和 unix 构建环境的类路径中使用这些 jar?

4

2 回答 2

11

注释具有不同的保留策略

  • SOURCE - 不在类文件中,被编译器丢弃(在运行时不需要)
  • CLASS - 在类文件中,但是虚拟机可以把它们扔掉
  • RUNTIME - 在运行时可用于反射

逻辑表明在运行时不需要 SOURCE 保留注释,CLASS不应该,并且 RUNTIME必须可用。

快速浏览一下 JSR 305 注释表明它们使用 RUNTIME 保留策略(示例),这向我表明确实需要这些 jar 在运行时加载类以满足注释协定。

但我自己并没有实际测试过。

于 2010-02-17T21:30:29.197 回答
8

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

于 2010-08-26T16:36:32.540 回答