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.