【问题标题】:Java Reflections: Get Classes but not SubTypesJava 反射:获取类但不获取子类型
【发布时间】:2015-09-25 12:29:05
【问题描述】:

我正在从 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)

【问题讨论】:

    标签: java reflection


    【解决方案1】:

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

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

    【讨论】:

    • 这对我不起作用:(我仍然遇到同样的错误。奇怪的是我得到TypeAnnotationsScanner was not configured,而我已经有new TypeAnnotationsScanner()。知道为什么它失败了?
    • @xbmono 该主题的任何成功。我有同样的问题,扫描仪在构造函数中传递并告诉我它没有配置
    • @HenningLuther 抱歉,这是很久以前的事了,我真的不记得我做了什么,但在我的情况下,相同的代码运行良好(不确定这是否是 jdk 中的错误,我们升级了它或其他东西)但这段代码工作正常:Reflections reflections = new Reflections(new String[]{"com.mypackage"});
    • @xbmono 感谢您的回答。看来我在使用 java13 时遇到了这个问题。从 8 升级到 13 后,不知何故反射不起作用。所以我只是等待他们为 13 提供修复
    【解决方案2】:

    不确定它是否有帮助,但是当我更新一个完全不相关的库时,我遇到了 Scanner SubTypesScanner was not configured 错误。

    我发现that message 有人在寻找类似的错误,发现当路径完全为空时抛出异常(不是我的情况),但如果所查找的基类不在扫描中包(我的情况)。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-18
      • 2013-12-16
      • 2012-04-03
      • 2015-09-13
      • 2017-05-08
      • 1970-01-01
      相关资源
      最近更新 更多