【发布时间】:2017-11-13 01:57:05
【问题描述】:
如果我提供了一个目录的地址,但我没有关于目录中内容的信息,我是否可以检查该目录是否包含任何类并通过URLClassLoader 访问这些类。
我目前正在使用目录地址创建一个 URL 数组:
URL [] urls = new URL[1];
urls[0] = new File(address).toURI().toURL();
URLClassLoader urlClassLoader = new URLClassLoader(urls);
但是,即使使用这种方法,我也无法从 URLClassLoader 对象访问类,因为我不知道这些类叫什么,对吧?
【问题讨论】:
-
walking the file tree 并加载您找到的每个“.class”文件怎么样?
-
你说得对,Java 故意不提供枚举包中类的方法。有一个 Guava 实用程序可以查看加载程序、获取目录并为您枚举 .class 文件。
-
我不知道你为什么需要这个,但我怀疑通过让可发现的类实现一个接口并将该接口作为服务提供者接口来为你提供更好的服务,如ServiceLoader documentation 中所述.
标签: java reflection urlclassloader