Findbugs Annotations - 我在部署的代码中是否需要annotation.jar和jsr305.jar?

tin*_*man 18 java annotations static-analysis findbugs

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

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

Ale*_*ler 11

注释具有不同的保留策略:

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

逻辑将指示在运行时不需要SOURCE保留注释,CLASS 不应该,并且RUNTIME 必须可用.

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

但我自己并没有亲自测试过.


Mat*_*nry 8

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