views:

359

answers:

2

So, I would like to use the findbugs annotations to suppress warnings we deem ok code.

Do we need to deploy the annotation.jar and jsr305.jar into our production runtime, or do we only need these jars in the classpath for our Eclipse project and our unix build environment?

+2  A: 

Annotations have varying retention policies:

  • SOURCE - not in class file, discarded by the compiler (would not be needed at runtime)
  • CLASS - in the class file, but the VM can throw them away
  • RUNTIME - available for reflection at runtime

Logic would indicate that SOURCE retention annotations would not be needed at runtime, CLASS should not, and RUNTIME must be available.

A quick glance at the JSR 305 annotations indicates that they use the RUNTIME retention policy (example), which indicates to me that these jars would indeed be needed to load the classes at runtime to satisfy the annotation contract.

But I haven't actually tested this myself.

Alex Miller
Alex, thanks for pointing me down the right path with the annotations. I only plan on using the edu.umd.cs.findbugs.annotations.SuppressWarnings annotation, which has CLASS retention. I will be trying a test in the next few days by promoting some annotated files into a build and run env.
tinman
A: 

Per my related question, you won't run into any problems if these annotations aren't present at runtime.

Matt McHenry