- ベストアンサー
jarファイルをダブルクリックで実行できない問題
- Windows VistaとJava SE 6 UPDATE 4でJavaの勉強中
- jarファイルをコマンドラインからは実行できるが、ダブルクリックしても実行できない
- MANIFEST.MFの記述や解凍後のフォルダ構成を確認したが問題なし
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは、 コマンドラインで、実行できるけど、 ダブルクリックで、 Could not find the main class. Program will exit が出る、同様な、例を見つけました。 http://www.javaroad.jp/bbs/answer.jsp?q_id=2008072616203646 これによると、もしかすると、関連付けかもしれません 関連付けは、以下のURLのようになっているでしょうか。?? http://www.s-cradle.com/support/sophiacompress_java/scj_jre_change.html#parameter 関連付けが上手く行っていなくとも同じエラーが出るみたいです。 Could not find the main class. Program will exit で検索すると、沢山、ヒットするようです。 eclipseのせいだとか、書いてあるのもあるので、 netbeansをインストールして試してみるのも良いかも知れません。
その他の回答 (5)
- tom11
- ベストアンサー率53% (134/251)
ちょっと、ググって見ました。 同様なエラーの質問と、回答です。 http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=24619&forum=12&16 参考までに
- tom11
- ベストアンサー率53% (134/251)
こんにちは、 エクリプスで、エキスポートしても、うまくjarが 動作しませんか??? 不思議ですね。 いただいた、ソースコードを実行してみましたが、 ちゃんと動作しますね。 目的のjarファイルを作っても見ましたが、 ダブルクリックで、ちゃんと動作します。 >これらをコンパイルしまして、 >できたクラスファイル2つとMANIFEST.MF、 >この3つのファイルが同じフォルダにある状態で、 >jarファイルを作りました エクリプスを利用するので、今回は、これは、やりませんでしたよね。 ちなみに、エクリプスの今回作ったプロジェクトのワークススペースには .classpath .project HelloWorld.class HelloWorld.java MainPanel.class MainPanel.java この6つのファイルしかないですよね。 MANIFEST.MFファイルは、ないですよね。 後は、プロジェクトをエキスポートする時に .classpath .project が出来るように、checkを入れて、 エキスポート先の設定と あと、メインクラスを選択して。完了させれば okなのですが。 MANIFEST.MFは、独自に作らなくとも、いいはずです。 前回紹介したホームページのエクリプスでのjarファイルの 作成方法を、注意点を参考に、 も一度トライしてください。 実行した結果。 また、 Could not find the main class. Program will exit がでますか、それとも、違うメッセージが出ますか???
補足
アドバイスありがとうございます。何度も丁寧に対応していただきまして感謝しております。 >これらをコンパイルしまして、 >できたクラスファイル2つとMANIFEST.MF、 >この3つのファイルが同じフォルダにある状態で、 >jarファイルを作りました はい。これは、最初にマニュアルで作成した時の手順です。 ご紹介いただきましたサイトを参考に、7回ほど挑戦しましたが、やはりうまくいきませんでした。 ワークスペースのプロジェクトの中には、.classpathファイルと、.projectファイルと、binフォルダ、srcフォルダが入ってまして、binフォルダの中に、HelloWorld.classとMainPanel.classが入っていまして、srcフォルダの中に、ソースファイルが入っています。 完成したHelloWorld.jarをラカで解凍して中身を見ましたら、HelloWorldフォルダができまして、その中に、.classpathと.projectとHelloWorld.classとMainPanel.classと、自動的にMETA-INFフォルダができていました。META-INFフォルダの中には、自動的にMANIFEST-MFが作成されていました。 Eclipseで作成しましたjarファイルを、コマンドラインでjava -jar HelloWorld.jar と打ったら実行できるのですが、ダブルクリックで実行させると、Could not find the main class. Program will exit になりました。 あと、別のパソコン(Windows xp とJ2SE1.4です。自分のパソコンを持つ前に家族のパソコンを借りて使ってました。)でHelloWorld.jarをマニュアル作成し、そのパソコンでダブルクリックして実行しましたら、うまく行きました。うまくいったjarファイルをメモリーカードに保存し、自分のパソコンでダブルクリックをしましたら、やはりうまくいきませんでした。その逆に、自分のパソコンでマニュアル作成しましたHelloWorld.jarを、別のパソコンでダブルクリックしてもやはりうまくいきませんでした。 C:\program files\Javaの中に以前のバージョンのJavaが残っていましたのでアンインストールしました。ついでに今のバージョンのJavaも再インストールしてみましたが、やはりうまくいきませんでした。
- tom11
- ベストアンサー率53% (134/251)
こんにちは、 eclipseを利用したいたのですか、 ならば、以下のURLのようにすれば良いみたいです。 http://sunjava.seesaa.net/article/57546363.html 単に、チェックして、メインクラスを指定して、 エキスポートを完了させれば、良いみたいですよ。 自分で、マニュフェストファイルを作ったりしていたので、 マニュアルで、jarファイルを作っているのかと 思いました。 しかし不思議なのですが。 コマンドラインから、実行できて、 ダブルクリックで、実行できない理由がわかりません。 もし動作しなかったら、プログラムソースに問題があるのかな?? ソースを補足で、公開してください。
お礼
申し訳ございません。追加補足ですが、最初はコマンドラインからjarファイルを作成しました。それでうまくいかなかったので今回質問投稿しまして、tom11さんからいただいたアドバイスをもとに、今度はEclipseを使って、jarファイルを作成しました。 Eclipseを使って、jarファイルを作成した参考サイトは、tom11さんが教えて下さりましたサイトと同じサイトでした。
補足
アドバイスありがとうございます。ソースの方は、 HelloWorld.javaが、 import java.awt.*; import javax.swing.*; public class HelloWorld extends JFrame{ public HelloWorld(){ setTitle("ハロー"); MainPanel panel=new MainPanel(); Container pane=getContentPane(); pane.add(panel); pack(); } public static void main(String[] args){ HelloWorld frame=new HelloWorld(); frame.setDefaultCloseOperation(3); frame.setVisible(true); } } MainPanel.javaが、 import java.awt.Dimension; import java.awt.Graphics; import javax.swing.JPanel; public class MainPanel extends JPanel{ private static final int WIDTH=240; private static final int HEIGHT=240; public MainPanel(){ setPreferredSize(new Dimension(WIDTH,HEIGHT)); } public void paintComponent(Graphics g){ super.paintComponent(g); g.drawString("ハローワールド",20,50); } } になっています。 これらをコンパイルしまして、できたクラスファイル2つとMANIFEST.MF、この3つのファイルが同じフォルダにある状態で、jarファイルを作りました。 あと気になるところですが、参考サイトが提供しているhello_world.jarというファイルをデスクトップにダウンロードして、デスクトップ上のhello_world.jarをダブルクリックしても、 同じように、「Could not find the main class. Program will exit.」というダイアログが出現して実行できませんでした。 参考サイトは、 http://javagame.skr.jp/index.php?%BC%AB%B8%CA%BC%C2%B9%D4%B7%BFJAR%A5%D5%A5%A1%A5%A4%A5%EB を参考にしました。
- tom11
- ベストアンサー率53% (134/251)
こんにちは、 jarファイルをダブルクリックで、結果を見たいとき GUIのプログラムをお勧めします。 コンソールアプリだと、私も試して見ましたが。 窓は、開きません。 エラーも出ません。 >コマンドラインが一瞬立ち上がってすぐに消えたり この現象は、もしかすると、コンソールアプリなので、 ドス窓が、開いて実行して、すぐ、ドス窓が 閉じる現象かもしれません プログラムが、途中で止まらず終了しているのかもしれません。 javaを勉強するなら、IDEは、必須です。 エクリプスでもネットビーンでもどちらも無料だし、 jarファイルも、自動で簡単に作成できて、 ミスが少なくなります。 IDEを使うことをお勧めします。
補足
アドバイスありがとうございます。 プログラムはGUIプログラムです。 Eclipseで、プロジェクトの上で右クリックしてエクスポートからjarファイルを作って、ダブルクリックしてみましたが、 「Could not find the main class. Program will exit.」というダイアログが出現して、実行できませんでした。 Eclipseの「実行」ボタンでは動きますし、コマンドラインからでも実行できるプログラムなのですが、もしおかしい所がございましたらまたアドバイスよろしくお願いいたします。
最後の、Main-Class: HelloWorld の後は、改行してあるだろうか? それと、このHelloWorldは、packageは指定してないんだろうか? 例えば、jp.hoge.HelloWorldとかであったりしないか?
補足
アドバイスありがとうございます。 Main-Class:HelloWorld のあと、改行しています。(ちゃんと反映されているかどうかチェックするため一度ラカで解凍して中身も確認しています。) あとパッケージは指定しておりません。
お礼
アドバイスありがとうございます。関連付けあたりが一番あやしそうなのでやってみます。vistaではどこで「アクションの編集」でopenとかを行えばいいかよくわからないのでまだうまくいっていませんが、かなり近いところまで来てそうなので引き続きいろいろやってみようと思います。netbeansは何をするものなのか知らないので、それもまた調べてみようと思います。 いろいろとアドバイスしていただきまして、ありがとうございました。