質問: 重複すみません。 匿名は失礼なのかなと思いIDを作って立て直しました。 jarファイル作成の勉強をしているのですが、エラーが出て困っています。 使っているのは『プログラマー 研究所 シューティング』 で検索すると一番上に出てくるページの『Simple.jar』です。 まず、jarで解凍したりアーカイブしたりを試してみました。 Cドライブに『test1』フォルダを作ってそこに保存しました。 [C:\test1\Simple.jar] これをダブルクリックするとゲームが起動します。 コマンドプロンプトを起動して 「cd \test1」でSimple.jarを保存したディレクトリに移動しました。 「jar xvf Simple.jar」で解凍しました。 『META-INF』(中にMANIFEST.MF)と4つのクラスファイル、 『Canvas.class』 『InputDevice.class』 『PlayState.class』 『Simple.class』 あとは『resources』(中にgif)と『src.lzh』ができました。 「jar cvfm test1.jar META-INF\MANIFEST.MF *.class resources」 で『test1.jar』ができました。 『test1.jar』をダブルクリックするとゲームが起動しました。 問題はここからなのですが、 次にソースをコンパイルして、jarにできるか試してみました。 次にC直下に『test2』というフォルダを作りました。 そこにsrc.lzhを解凍してできたjavaファイルを入れました。 C:\test2\Canvas.java C:\test2\InputDevice.java C:\test2\PlayState.java C:\test2\Simple.java (解凍したときmakejar.batというバッチファイルがでてきたのですが 扱いがわからないので放置しました。) 「cd ../test2」で移動し 「javac *.java」でコンパイルしました。 クラスファイルが4つできました。 test1から『META-INF』と『resources』をコピペしてtest2に入れました。 そこでまたさっきと同じように 「jar cvfm test2.jar META-INF\MANIFEST.MF *.class resources」 でtest2.jarができました。 これをダブルクリックしても 「Could not find the main Class: Simple.Program will exit.」 と出て起動してくれません。 コマンドプロンプトで(カレントディレクトリtest2) 「java -jar test2.jar」 と打つと起動してくれます。 「lzhの中のソースがクラスファイルと違うものなのかな?」 と思い、 『test3』をC直下に作って、test1のクラスファイルをコピペしました。 [C:\test3\Canvas.class]など4つ 「cd ../test3」 「jad *.class」でデコンパイルして [C:\test3\Canvas.jad]など4つできました。 拡張子をjadからjavaに変えて、 上のtest2と同じようにtest3.jarをつくりました。 ダブルクリックで起動できませんでした。 「java -jar test3.jar」で起動してくれます。 きっとコンパイルのときになにか間違ってるんだ! batファイルをどうにかしないといけないのかな? と思い色々検索しましたがさっぱりわかりません。 なにか助言いただければうれしいです。 OSはwindows7 home 64bit JDKは1.7.0です。 宜しくお願いします。
回答: 自己解決できました 苦節2週間半でした。 jdk1.7.0_1に同梱されているjreではjarのダブルクリック起動ができないようです。 全然別のことで、jre1.7.0_2のインストーラを落とす機会がありまして、 「いみねぇけど一応このPCにもいれとくかー」 くらいでjre単体を自分のPCにもインストールしました。 そしたら、今までつくったjarファイルが全部起動できるではないですか。 「jdk1.7.0_1の不具合じゃーーーーーーーーーん」(日常みおちゃん風) ということで、他の方がこの苦しみを味わうことはないかもしれませんが jdk1.7.0_2がどうなっているかわからないので一応記載しておきます お役にたてれば。。