1

GUI アプリケーション (A.jar) を実行しています。次に、この GUI (A.jar) にプラグイン (B.jar) を追加します。次に、B.jar の manifest.mf ファイルにアクセスします。B.class.getResourceAsInputStream("/META-INF/MANIFEST.MF") を試してみました。しかし、私が得たのは B.jar ではなく、A.jar の manifest.mf です。

誰でもこの問題に関するヒントを教えてもらえますか? 本当にありがとう。

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 に答える