1

我正在运行一个 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。

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

4

1 回答 1

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();

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


或者获取课程 URL:

URL url = b.class.getProtectionDomain().getCodeSource().getLocation();
于 2013-09-17T20:38:50.347 回答