我正在运行一个 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。
任何人都可以给我一些关于这个问题的提示吗?非常感谢。
我正在运行一个 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。
任何人都可以给我一些关于这个问题的提示吗?非常感谢。
就是一般的类加载器会在类路径上采用先来的路径,显然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();