jdk 1.6.0.26のjarコマンドを使って、既存のjarファイルのマニフェストファイルを更新したいのですが、下記のように警告が表示されてしまいます。
(下記例は、既存のtest.jarにマニフェストファイルmanifest.txtを更新する例です)
>jar uvmf manifest.txt test.jar
2011/08/15 1:54:26 java.util.jar.Attributes read
警告: Duplicate name in Manifest: Main-Class.
Ensure that the manifest does not have duplicate entries, and
that blank lines separate individual sections in both your
manifest and in the META-INF/MANIFEST.MF entry in the jar file.
2011/08/15 1:54:26 java.util.jar.Attributes read
警告: Duplicate name in Manifest: Class-Path.
Ensure that the manifest does not have duplicate entries, and
that blank lines separate individual sections in both your
manifest and in the META-INF/MANIFEST.MF entry in the jar file.
マニフェストが更新されました。
ちなみに、既存のtest.jarのマニフェストファイルの内容は、下記のようになっており、
Main-Class: jp.main.MainClass
Class-Path: hello.jar
manifest.txtの内容は、下記のようになっています。
Main-Class: jp.main.MainClass
Class-Path: hello2.jar
つまり、Class-Pathの所を別なjarファイルに書き換えたいわけです。
上記のjarコマンドで、警告はでますが、実行するとhello2.jarが動作しているようなので、大丈夫なのですが、警告が出るということは、やり方が悪いのでしょうか?
No.2ベストアンサー
- 回答日時:
ちょっと補足させて下さい。
注意を喚起すると書きましたが、なんか違うような気がしてきました。
前述したjarコマンドの処理内容を逆手に取ると、manifest.txtの中身は
Class-Path: hello2.jar
でも
Class-Path: hello2.jar
Main-Class: jp.main.MainClass
Class-Path: hello2.jar
でも結果は同じになる訳です。
で、後者の場合に「重複してます」という警告を出すという処理になっていると思われますが、それが微妙にバグってて、既存のマニフェストと指定のマニフェストで重複しているものに対しても警告が表示されているのではないかと思われます。
まあ何にしても気にする必要はないかと。
No.1
- 回答日時:
jarコマンドのmオプションは、既存のマニフェストファイルを指定されたマニフェストファイル(今回ではmanifest.txt)に置き換えるという挙動ではなく、「指定されたマニフェストファイル(manifest.txt)中に記述されている名前と値のペアを1つずつ、既存のマニフェストファイルに取り込んでいく」という挙動になります。
つまり今回の例で言うと、更新したいのはClass-Pathのみですから、manifest.txtの中身は
Class-Path: hello2.jar
だけでも大丈夫なわけです。
その取り込む処理の中で、存在しない名前:値のペアの場合は追加し、(今回のClass-Pathのように)存在してるペアの場合は上書きするという処理になります。
問題の「警告」ですが、上書きする際に「上書きました」という情報を親切に表示させているだけです。敢えて「警告」にしてるのは、ユーザが想定してない場合を考慮して、注意を喚起する為だと思われます。
ですので、全く気にする必要はないと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
javaクラスファイルをEclipseで...
-
classファイルについて
-
Eclipse「リフレッシュ」と「ク...
-
SVFの設定について:クラスパス...
-
【Eclipse】パッケージ・エクス...
-
【Eclipse】逆コンパイルでエラ...
-
earファイルを展開する方法
-
Java初心者です。 コマンドプロ...
-
java.io.Fileクラスは絶対パス...
-
プログラム実行の際に、「ソー...
-
Eclipse・プロジェクトで、フォ...
-
コンパイルした後 java (class...
-
「main メソッドを持つクラスが...
-
「削除するか、クラスパスの正...
-
java クラスファイルとソースコ...
-
jdbcドライバのjarファイルにク...
-
java初歩の初歩 コンパイルエラー
-
EclipseでHTTP404エラーが出る。
-
Warファイルの解凍について質問...
-
JSP内で外部jsファイルを指定する
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
classファイルについて
-
javaクラスファイルをEclipseで...
-
Eclipse・プロジェクトで、フォ...
-
Eclipse「リフレッシュ」と「ク...
-
SVFの設定について:クラスパス...
-
earファイルを展開する方法
-
eclipse でclassesフォルダーが...
-
【Eclipse】パッケージ・エクス...
-
jdbcドライバのjarファイルにク...
-
Jarコマンドでマニフェストファ...
-
EclipseでHTTP404エラーが出る。
-
「メイン・マニフェスト属性が...
-
ResourceBundleクラスの使い方
-
プログラム実行の際に、「ソー...
-
java.io.Fileクラスは絶対パス...
-
コンパイルをしようとするとエ...
-
「削除するか、クラスパスの正...
-
java クラスファイルとソースコ...
-
VisualStudioでC++クラスを追加...
-
JAR内のクラス一覧と、メソッド...
おすすめ情報