我正在使用反射来查找具有特定注释的类。我的项目结构如下
一个 WAR 包:WEB-INF/classes/...packages.../ClassAnnoted1.class
战争中包含的一个 JAR 包,它有一个执行此代码的类:
Reflections reflections= new Reflections(ClasspathHelper.forWebInfClasses(servletContext))
Set set= reflections.getTypesAnnotatedWith(CustomAnnotation.class)
CustomAnnotation 也存在于 JAR 包中。
设置大小是正确的(即,如果我的 WAR jar 中有 3 个带有注释的类,则设置大小返回为 3),但其中的所有元素都是 null 而不是 Class。我需要获取类并检查 JAR 类中的注释参数。
有人知道为什么会这样吗?
编辑:
Reflections reflections= new Reflections("com.my.customAnnotededClasses"); //package that my annoted class is in
Set set= reflections.getTypesAnnotatedWith(CustomAnnotation.class);
也不起作用,在这种情况下,设置长度为零,而不是带有注释的类数。
编辑 2:好的,真正的问题是我将整个应用程序打包为 EAR,所以我有以下内容:
EAR
----> WAR
----> JAR
jar 包含在 EAR lib 文件夹中,而不是 WAR lib 文件夹中。所以jar类看不到war类,一旦我让WAR直接依赖于JAR,就像这样:
EAR
----> WAR
---------> JAR
它开始工作了。但是最初的问题仍然存在,可能存在我希望将 Jar 类包含在 EAR 而不是 WAR 中的情况(例如,如果我有多个需要使用我的 jar 的战争)。