jarコマンド後の「メイン・マニフェスト属性がありません」というエラー
問題
jarコマンドを実行した後にファイルを開く、もしくはコマンドプロンプトでプログラムを実行しようとしても開かない、もしくは「メイン・マニフェスト属性がありません」と表示させる結論
拡張子「.MF」のマニフェストファイルのソースコードの行末に改行が入っていない。もしくは「Main-Class属性」が正しく入っていない対策
ソースコードの行末に改行をいれて最後の行を必ず空行にする。もしくはMain-Class属性を正しく入れる。いよいよファイルをダブルクリックすることで簡単にファイルを開ける状態にすることができる段階まで来たのだが、jarコマンドを実行し、できたjarファイルを実行してもうんともすんともしない。
しょうがないのでコマンドプロンプトで「java -jar test.jar(←制作したファイル名)」と入力してみると「メイン・マニュフェスト属性がありません」と表示される。
うーん、コマンドプロンプトの打ち間違いかなと思ってjarコマンド
jar cvfm test.jar work\MANIFEST.MF work\*.class work\*gif
(gifファイルをアイコンに使っていた)
を再度正確に入力してもだめだった。
何やねんメイン・マニュフェスト属性てと思って調べてみるとどうやらこの手のエラーは.MFファイルの記述が間違っていることで引き起こされるらしい。
今回自分は「MANIFEST.MF」と名付けた。
このMANIFEST.MFファイルに問題があったというわけだ。
自分の場合はMANIFEST.MFファイルに
「Main-class: work.test」
と記述したのだが、正しくは
「Main^class: work/test (←この改行が重要)
」 (←この行は空にしないといけない)
であった。
改行するかしないかでプログラムを実行できないってそれどうなのよ。と思うが、初心者にはわからない事情があるのだろう。
また、他の相談系掲示板ではMain-Class属性を正しく入れてなかったがために起動しなかったという事例があった。
これでフォルダのファイルをクリックするだけでアプリが動くようになった。
やったぜ。