繁体   English   中英

Java 思考:获取类而不是子类型

[英]Java Reflections: Get Classes but not SubTypes

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

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

这让我获得了resources package 中的所有类,并带有@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)

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

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

不确定它是否有帮助,但我发现Scanner SubTypesScanner was not configured错误,当我更新一个完全不相关的库时,该错误开始出现。

我发现这个信息哪里有人,找一个类似的错误,发现异常被抛出时的路径完全是空的(没有我的情况下),而且如果一个基类中的一个寻找的是不是在扫描包(我的情况)。

我不知道为什么它曾经可以工作,也不知道它为什么停止,但是我在扫描仪中添加了丢失的包,然后它又开始工作了。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM