我正在创建一个需要查找具有带@Program
注释的类的JAR的启动器。但是每当我加载JAR类时,它就永远无法从任何JAR中的任何类中找到注释。
如果我在启动器JAR中有类,它们会出现。但是当他们来自外部JAR时,他们不会表现出来。 getAnnotations()
没有显示任何内容。即使getClassesAnnotatedWith(Program.class)
也没有。
我错过了什么?
注释在它自己的类旁边(同一个包)是程序的主要类。
@Retention(RetentionPolicy.RUNTIME)
@Type (ElementType.TYPE)
public @interface Program {
}
答案 0 :(得分:0)
为了正确处理注释,它们的类文件必须位于正在运行的程序的类路径中。如果JVM加载的类具有在类路径中找不到的注释,则会以静默方式删除这些注释(除了找不到的类)。在这种情况下,您也不会再通过反射访问找到它们了。
因此,请确保注释'类文件位于类路径中。