1. ホーム
  2. java

[解決済み] 自分のジャーのマニフェストを読む

2022-05-12 02:07:35

質問

を読み取る必要があります。 Manifest ファイルは、私のクラスを配信したが、私が使用するとき。

getClass().getClassLoader().getResources(...)

を取得します。 MANIFEST から、最初の .jar をJavaランタイムに読み込ませる。

私のアプリはアプレットまたはウェブスタートから実行される予定です。

ということで、自分自身の .jar ファイルを作成することができますね。

を実際に読んでみたい。 Export-package 属性から .jar 起動した を使用して、これらのパッケージをFelixに公開することができます。何かアイデアはありますか?

解決方法は?

次の2つの方法があります。

  1. コール getResources() を作成し、返された URL のコレクションを繰り返し、自分のものを見つけるまでそれらをマニフェストとして読み取ります。

    Enumeration<URL> resources = getClass().getClassLoader()
      .getResources("META-INF/MANIFEST.MF");
    while (resources.hasMoreElements()) {
        try {
          Manifest manifest = new Manifest(resources.nextElement().openStream());
          // check that this is your manifest and do what you need or get the next one
          ...
        } catch (IOException E) {
          // handle
        }
    }
    
    
  2. があるかどうかを確認してみてください。 getClass().getClassLoader() のインスタンスです。 java.net.URLClassLoader . Sun のクラスローダーの大半は、以下のようなものです。 AppletClassLoader . そして、それをキャストして findResource() これは、少なくともアプレットでは、必要なマニフェストを直接返すことが知られています。

    URLClassLoader cl = (URLClassLoader) getClass().getClassLoader();
    try {
      URL url = cl.findResource("META-INF/MANIFEST.MF");
      Manifest manifest = new Manifest(url.openStream());
      // do stuff with it
      ...
    } catch (IOException E) {
      // handle
    }