5

我正在使用 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 文件中运行此代码时,没有输出。我究竟做错了什么?

谢谢

4

1 回答 1

0

注意

Reflections reflections = new Reflections("com.package");

在那里,您尝试探索嵌套在com中的包包中的注释类。但是是Java关键字。所以不能用作包名。在我移动并进入com包之后,一切正常。packageAppTestAnnotation

但有可能你的情况真的很糟糕。可能是某个工具或某些人创建了具有名的包(例如,使用 Cyrillicа而不是 Latin a,两者在编辑器中看起来相同,但对于 Java,它们完全不同)。当字母混合时,一切看起来都很好,但不起作用。因此,请尝试创建新的有效根包并将您的类移入其中。

于 2015-11-13T10:12:13.587 回答