如何在另一个jar文件中读取文件?

时间:2013-09-17 20:29:10

标签: java jar embedded-resource manifest.mf

我正在运行GUI应用程序(A.jar)。然后我在这个GUI(A.jar)中添加了一个插件(B.jar)。 现在我想访问B.jar中的manifest.mf文件。我尝试了B.class.getResourceAsInputStream(“/ META-INF / MANIFEST.MF”)。但是,我得到的是A.jar中的manifest.mf,而不是B.jar。

任何人都可以给我一些关于这个问题的提示吗?非常感谢。

1 个答案:

答案 0 :(得分:2)

通用类加载器将采用类路径首先出现的路径,显然A.jar首先出现在B.jar之前。

String someUniqueResourceInBJar = "...";
URL url = B.class.getResource(someUniqueResourceInBJar);
url = new URL(url.getPath().replaceFirst(someUniqueResourceInBJar + "$", "")
    + "META-INF/MANIFEST.MF";
url.openStream();

网址将类似于“jar:file://.../B.jar!META-INF / MANIFEST.MF”。


或者获取课程网址

URL url = b.class.getProtectionDomain().getCodeSource().getLocation();