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?
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.
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)
.
精彩评论