无法检查eclipse rcp类加载器中的注释

时间:2012-07-18 06:47:29

标签: eclipse annotations rcp

我有以下代码。它适用于加载我指向的类TestSuiteSample。 TestSuiteSample只是一个带注释的标准JUnit4测试套件。作为普通的java项目运行,这将打印“true”,但在eclipse rcp下运行,这将打印“false”。有什么想法吗?

File testSuiteDir = new File("D:/TestDir/");
URL classUrl; 
classUrl = testSuiteDir.toURI().toURL(); 
URL[] classUrls = { classUrl }; 
URLClassLoader ucl = new URLClassLoader(classUrls); 
Class<?> cls = ucl.loadClass("TestSuiteSample"); 

if (cls.isAnnotationPresent(SuiteClasses.class)) { 
     System.out.println("true"); 
} else {
     System.out.println("false"); 

}

我试过这个来检查cls中的注释,但仍然返回0注释。

Annotation[] annotations = new TestClass(clazz).getAnnotations();
for (Annotation annotation : annotations) {
    System.out.println(annotation.annotationType().getName());
}

1 个答案:

答案 0 :(得分:0)

问题是SuiteClasses类来自不相关的ClassLoader,而不是来自您用于加载正在测试的类的URLClassLoader。如果您将URLClassLoader的父级作为包或线程上下文ClassLoader,那么它应该解析为同一个类。