我正在运行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。
任何人都可以给我一些关于这个问题的提示吗?非常感谢。
答案 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();