如何在jar文件中使用ClassLoader.getResources()

时间:2012-07-17 05:46:06

标签: java jar classloader

问题陈述:
我有一个包含mycompany/configuration/file/包中的一组配置文件的jar文件 我不知道文件名。
我的目的是在运行时从打包它们的jar文件中加载文件名,然后在我的应用程序中使用它 据我所知:  当我使用ClassLoader.getResources("mycompany/configuration/file/")时,我应该将所有配置文件作为URL 然而,这就是发生的事情:
我得到一个网址对象,其网址为jar:file:/C:/myJarName.jar!mycompany/configuration/file/ 能不能让我知道我做错了什么?

1 个答案:

答案 0 :(得分:2)

对于你想要做的事情,我认为不可能。

getResourcegetResources是关于在类加载器的类路径中查找命名资源,而不是列出目录或文件夹下的值。

因此,例如ClassLoader.getResources("mycompany/configuration/file/Config.cfg")将返回类加载器类路径中 mycompany / configuration / file 路径中存在的名为 Config.cfg 的所有文件(我发现这对于个人加载版本信息特别有用)。

在你的情况下,我认为你可能几乎有一半的解决方案。您获取的URL包含源jar文件(jar:file:/ C:/myJarName.jar)。您可以使用此信息来破解打开jar文件,读取条目列表,过滤那些名称以“mycompany / configuration / file /".

开头的条目

然后,您可以使用getResource方法来加载对每个方法的引用(现在您已拥有名称和路径)