Java 当不是层次结构中的所有类型都在筛选的类路径url中时,使用反射查找类的(可传递的)子类型

Java 当不是层次结构中的所有类型都在筛选的类路径url中时,使用反射查找类的(可传递的)子类型,java,reflection,classpath,reflections,Java,Reflection,Classpath,Reflections,我试图使用库来获取特定类的所有子类。我需要将搜索过滤到特定类路径url中的子类。 这是我正在使用的代码: ConfigurationBuilder config = new ConfigurationBuilder(); config.addUrls(<my_url>); Reflections reflections = new Reflections(config); Set<Class<? extends A>> set = reflections.ge

我试图使用库来获取特定类的所有子类。我需要将搜索过滤到特定类路径url中的子类。 这是我正在使用的代码:

ConfigurationBuilder config = new ConfigurationBuilder();
config.addUrls(<my_url>);
Reflections reflections = new Reflections(config);
Set<Class<? extends A>> set = reflections.getSubTypesOf(A.class)
ConfigurationBuilder config=new ConfigurationBuilder();
config.addURL();
反射=新反射(配置);

Set关键在于,如果没有扫描所有相关的URL,就无法发现可传递性。你应该知道你的类路径

如果您不知道所有涉及的URL,可以使用

ClasspathHelper.forClassLoader()

嗨@zapp,我事先不知道类路径的原因是因为我正在开发一个供第三方使用的库。我可以推断调用我的库的代码的类路径(稍微玩一下堆栈跟踪),因此我可以透明地将它添加到反射的搜索路径中,但是我没有看到一种简单的方法来包含我的库的客户端所需的所有相关类路径。我想我必须跟踪所有的URL,但这可能会对我的应用程序的性能产生影响:(.无论如何,谢谢你的建议!
ClasspathHelper.forClassLoader()