2014-10-02 90 views
-2

我正在制作一个启动器,需要找到具有注解类的注释的JAR。但是,无论何时加载JAR类,都无法在任何JAR中找到任何类的注释。加载外部JAR

如果我在启动器JAR中有类,它们就会显示出来。但是当从外部JAR来时,它们不显示。 getAnnotations()什么也没有显示。即使getClassesAnnotatedWith(Program.class)什么都不给。

我错过了什么?

该注释与其程序的主类一起位于它自己的类中(同一包)。

@Retention(RetentionPolicy.RUNTIME) 
@Type (ElementType.TYPE) 
public @interface Program { 
} 

回答

0

为了正确处理注释,它们的类文件必须位于正在运行的程序的类路径中。如果JVM加载带有在类路径中找不到的注释的类,则这些注释将被静默地删除(除了未找到的类外)。在那种情况下,你也不会再发现它们具有反射访问。

因此,请确保注释的类文件位于类路径中。

+0

注解类位于启动器jar中。我是否需要在程序启动时显式加载该类? – buttcrackbil 2014-10-02 14:57:28

+0

请注明注释来源。 – Seelenvirtuose 2014-10-02 15:21:25

+0

只需在问题中添加注释类。 – buttcrackbil 2014-10-02 19:41:27