Si una clase se anota con una anotación, ¿la definición de esa anotación debe estar en el classpath en tiempo de ejecución para poder usar la clase? Por ejemplo, dada la anotación¿Se necesitan archivos de clase de anotación en la ruta de la clase de tiempo de ejecución?
import java.lang.annotation.ElementType;
import java.lang.annotation.Target;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Retention;
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface Component {}
puedo ejecutar el programa
@Component
public class Test {
public static void main(String[] args) {
System.out.println("It worked!");
}
}
sin tener Component.class en la ruta de clase? (En mi prueba podría, ¿pero este comportamiento está definido por la especificación?)
Pregunto porque hay conflicting claims si el uso de una anotación de una biblioteca crea una dependencia en esa biblioteca.
enlaces relacionados: http://mail.openjdk.java.net/pipermail/type-annotations-dev/2011-November/000079.html, https://bugs.eclipse.org/bugs /show_bug.cgi?id=366063 (para futura referencia rápida) – Jayan
Dup posible: http://stackoverflow.com/questions/3567413/why-doesnt-a-missing-annotation-cause-a-classnotfoundexception-at-runtime –
Gracias Matt, eso es exactamente lo que estaba buscando. – meriton