Java反思:获取类但不获取子类型

dced5bon  于 2023-01-29  发布在  Java
关注(0)|答案(3)|浏览(117)

我正在从org.reflections:reflections:0.9.5升级到版本0.9.9。我正在使用:

Reflections reflectionPaths = new Reflections("resources", new TypeAnnotationsScanner());
Set<Class<?>> rootResourceClasses = reflectionPaths.getTypesAnnotatedWith(Path.class);

这样我就得到了resources包中所有带有@Path注解的类。因为库已经更新了,所以第一行需要额外的new SubTypesScanner()来运行代码。但是我不希望返回子类型。
如何使用这个新版本的库来只拉回不是子类型的类和接口?
如果不包含SubTypesScanner,则会出现此异常

org.reflections.ReflectionsException: Scanner SubTypesScanner was not configured
    at org.reflections.Store.get(Store.java:58)
    at org.reflections.Store.get(Store.java:70)
    at org.reflections.Store.getAll(Store.java:97)
    at org.reflections.Reflections.getAllAnnotated(Reflections.java:423)
    at org.reflections.Reflections.getTypesAnnotatedWith(Reflections.java:384)
    at org.reflections.Reflections.getTypesAnnotatedWith(Reflections.java:370)
a2mppw5e

a2mppw5e1#

我相信你使用这个注解“javax.ws.rs.Path”。请试试这个:-

Reflections reflectionPaths = new Reflections("resources", new TypeAnnotationsScanner());
Set<Class<?>> rootResourceClasses = reflectionPaths.getTypesAnnotatedWith(Path.class, true);
ne5o7dgx

ne5o7dgx2#

不知道是否有帮助,但我有那个Scanner SubTypesScanner was not configured错误,当我更新一个完全不相关的库时开始出现。
我发现了这条消息,有人在寻找类似的错误时发现,当路径完全为空时(不是我的情况),以及当所查找的基类不在扫描的包中时(我的情况),都会抛出异常。
我完全不知道它以前为什么能工作,也不知道它为什么停止工作,但我在扫描仪中添加了丢失的包,它又开始工作了。

nhaq1z21

nhaq1z213#

我遇到了同样的问题,我的解决方案是提供SubTypesScanner以及:

Reflections reflectionPaths = new Reflections(packageString, 
                                    new TypeAnnotationsScanner(), new SubTypesScanner());

相关问题