使用 org.reflections 在 JAR 文件中找不到 Java 注释

jam*_*kes 5 java reflection annotations

我正在使用 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()); 
        } 
    }
}
Run Code Online (Sandbox Code Playgroud)

当我在 JAR 文件中运行此代码时,没有输出。我究竟做错了什么?

谢谢

fla*_*z14 0

注意

\n\n
Reflections reflections = new Reflections("com.package");\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n

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

\n