为java中的类路径提供首选项



应用程序有几个类路径(其中一些是在运行时添加的)。我想读取一个文件,它存在于两个不同的位置。根据不同的情况,我必须加载特定的文件。所以,我在考虑优先考虑类路径。但是,我不知道如何才能实现?

您可以使用类加载器从类路径读取任何文件

ExampleClass.class.getResourceAsStream("/path/to/file/inside/class.path");

如果资源在类加载器中多次存在,则将获取第一个遇到的资源。

ClassLoader对象允许您获取映射到相同资源路径的所有资源的列表

  Enumeration<URL> resources = Thread.currentThread().getContextClassLoader().getResources("/path/to/file/inside/class.path");

url应该使您能够找出文件来自哪个jar

注意,使用Java服务特性会更健壮:实现一个接口来加载同样返回优先级的资源

公共接口Loader {InputStream getResource(字符串名称);int优先();}

然后使用ServiceLoader类加载加载资源的服务,根据实现返回的优先级编号对它们进行排序,然后在它们上按顺序运行getResource,直到找到资源。

相关内容

  • 没有找到相关文章

最新更新