Java - 使用反射扫描所有包中的类

问题描述

我正在开发一个应用程序,该应用程序应该扫描给定类路径中的所有类和接口,并匹配用于 DI 创建的实现类。

我有一个注释:

@Target(TYPE)
@Retention(RUNTIME)
public @interface RequiresBinding {

}

一个界面:

@RequiresBinding
public interface LowertoupperSocketCreator {

  void createSocket(int lowertoupperPort);

  void setIp(InetAddress ip);

  DatagramSocket getSocket();
}

问题是我不能提前知道哪些包使用了这些注解,所以我需要扫描所有有这个注解的可用类。
我尝试了以下代码

Reflections reflections1 = new Reflections("",new TypeAnnotationsScanner(),new SubTypesScanner());
    Set<Class<?>> bindingProvidingClasses = reflections1.getTypesAnnotatedWith(ProvidesBinding.class);

症状是我无法找到尚未加载的类:在此示例中,与应用程序的 JAR 位于不同 JAR 中的类(应用程序依赖于该 JAR)不会被扫描。
如果我将 new Reflections("") 命令更改为 new Reflections("com"),这意味着不是一个完全虚拟的 Reflections 对象,而是一个包含所有以 com 开头的包的对象,确实我能够扫描所有课程。
有没有办法扫描类路径中的所有类,而无需有关相关包或可用 JAR 的任何信息?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)