我正在使用org.reflections库来检测我的项目中注释的一些类。当我从eclipse运行该项目时,发现了带注释的类。
但是,当项目被打包到JAR文件中并运行时,将找不到带注释的类。
下面是一些示例代码:
@TestAnnotation
public class App {
public static void main (String[] args) {
Reflections reflections = new Reflections("com.package");
Set<Class<?>> annotated = reflections.getTypesAnnotatedWith(TestAnnotation.class);
for (Class c : annotated) {
System.out.println ("found annotated class " + c.getName());
}
}
}当我在JAR文件中运行这段代码时,没有输出。我做错了什么?
谢谢
发布于 2015-11-13 18:12:14
注意
Reflections reflections = new Reflections("com.package");在这里,您将尝试浏览位于包包中的带注释的类,该包嵌套在com包中。但是package是Java关键字。因此它不能用作包的名称。在我将App和TestAnnotation移到com包中之后,一切都很正常。
但也有可能你的情况真的很糟糕。可能是一些工具或某些人创建的具有包名称的包(例如,使用西里尔字母а而不是拉丁语a,两者在编辑器中看起来是相同的,但它们在中完全不同)。当字母混合在一起时,一切看起来都很好,但却无法正常工作。因此,请尝试创建新的有效根包,并将您的类移入其中。
https://stackoverflow.com/questions/18257526
复制相似问题