• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Jarコマンドでマニフェストファイルを更新)

Jarコマンドでマニフェストファイルを更新

このQ&Aのポイント
  • jdk 1.6.0.26のjarコマンドを使って、既存のjarファイルのマニフェストファイルを更新したい。
  • 実行したjarコマンドで警告が表示されるが、hello2.jarが正常に動作しているため、問題はない。
  • マニフェストファイルの内容を変更するためには、manifest.txtファイルを編集し、そのファイルを使用してjarコマンドを実行すればよい。

質問者が選んだベストアンサー

  • ベストアンサー
  • bluehat43
  • ベストアンサー率52% (9/17)
回答No.2

ちょっと補足させて下さい。 注意を喚起すると書きましたが、なんか違うような気がしてきました。 前述したjarコマンドの処理内容を逆手に取ると、manifest.txtの中身は Class-Path: hello2.jar でも Class-Path: hello2.jar Main-Class: jp.main.MainClass Class-Path: hello2.jar でも結果は同じになる訳です。 で、後者の場合に「重複してます」という警告を出すという処理になっていると思われますが、それが微妙にバグってて、既存のマニフェストと指定のマニフェストで重複しているものに対しても警告が表示されているのではないかと思われます。 まあ何にしても気にする必要はないかと。

yossy_sas2000
質問者

お礼

なるほど、納得しました。 丁寧な説明ありがとうございます。

その他の回答 (1)

  • bluehat43
  • ベストアンサー率52% (9/17)
回答No.1

jarコマンドのmオプションは、既存のマニフェストファイルを指定されたマニフェストファイル(今回ではmanifest.txt)に置き換えるという挙動ではなく、「指定されたマニフェストファイル(manifest.txt)中に記述されている名前と値のペアを1つずつ、既存のマニフェストファイルに取り込んでいく」という挙動になります。 つまり今回の例で言うと、更新したいのはClass-Pathのみですから、manifest.txtの中身は Class-Path: hello2.jar だけでも大丈夫なわけです。 その取り込む処理の中で、存在しない名前:値のペアの場合は追加し、(今回のClass-Pathのように)存在してるペアの場合は上書きするという処理になります。 問題の「警告」ですが、上書きする際に「上書きました」という情報を親切に表示させているだけです。敢えて「警告」にしてるのは、ユーザが想定してない場合を考慮して、注意を喚起する為だと思われます。 ですので、全く気にする必要はないと思います。

関連するQ&A