Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Findbugs Annotations - Do I need annotation.jar and jsr305.jar in my deployed code?

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?

like image 499
tinman Avatar asked Feb 17 '10 21:02

tinman


2 Answers

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.

like image 95
Alex Miller Avatar answered Nov 07 '22 04:11

Alex Miller


Per my related question, you normally won't run into any problems if these annotations aren't present at runtime, even though some of them do have @Retention(RUNTIME).

like image 24
Matt McHenry Avatar answered Nov 07 '22 05:11

Matt McHenry