電子書籍の厳選無料作品が豊富!

こんにちは。今、Windows Vistaと、Java SE 6 UPDATE 4でJavaの勉強をしているのですが、以前書籍を読んでjarファイルを作った時は、コマンドラインからしか実行しなかったのですが、どうもダブルクリックでも実行できるような事が各サイトに載っていましたので、あるサイトを参考にHelloWorld.jarというファイルを作ったのですが、コマンドラインからは動作できますが、ダブルクリックしても「このファイルを開けません」というダイアログボックスが出てきたので、「インストールされたプログラムの一覧からプログラムを選択する」でjavaw.exeを選んだりjava.exeを選んだりして実行してみたのですが、コマンドラインが一瞬立ち上がってすぐに消えたり、「Could not find the main class. Program will exit.」というダイアログが出現したりして実行できませんでした。

MANIFEST.MFは、
Manifest-Version: 1.0
Main-Class: HelloWorld
と記述してます。

コマンドラインでjarファイルを作った時のコマンドは、
jar cvfm HelloWorld.jar MANIFEST.MF *.class
です。

コマンドラインからでは、java -jar HelloWorld.jarで動作しています。

HelloWorld.jar をラカで解凍したら、HelloWorldフォルダ直下に、HelloWorld.classとMainPanel.classとMETA-INFフォルダ、
META-INFフォルダの中にMANIFEST.MFがあり、中身は、

Manifest-Version: 1.0
Created-By: 1.6.0_04 (Sun Microsystems Inc.)
Main-Class: HelloWorld  となっていました。

もし悪い所がございましたら、アドバイスの方よろしくお願いいたします。

A 回答 (6件)

こんにちは、



コマンドラインで、実行できるけど、
ダブルクリックで、

Could not find the main class. Program will exit 

が出る、同様な、例を見つけました。

http://www.javaroad.jp/bbs/answer.jsp?q_id=20080 …

これによると、もしかすると、関連付けかもしれません

関連付けは、以下のURLのようになっているでしょうか。??

http://www.s-cradle.com/support/sophiacompress_j …

関連付けが上手く行っていなくとも同じエラーが出るみたいです。


Could not find the main class. Program will exit 
で検索すると、沢山、ヒットするようです。

eclipseのせいだとか、書いてあるのもあるので、

netbeansをインストールして試してみるのも良いかも知れません。
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます。関連付けあたりが一番あやしそうなのでやってみます。vistaではどこで「アクションの編集」でopenとかを行えばいいかよくわからないのでまだうまくいっていませんが、かなり近いところまで来てそうなので引き続きいろいろやってみようと思います。netbeansは何をするものなのか知らないので、それもまた調べてみようと思います。
いろいろとアドバイスしていただきまして、ありがとうございました。

お礼日時:2008/08/10 18:55

ちょっと、ググって見ました。


同様なエラーの質問と、回答です。

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.ph …

参考までに
    • good
    • 0

こんにちは、



エクリプスで、エキスポートしても、うまく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も再インストールしてみましたが、やはりうまくいきませんでした。

補足日時:2008/08/10 15:45
    • good
    • 0

こんにちは、



eclipseを利用したいたのですか、

ならば、以下のURLのようにすれば良いみたいです。

http://sunjava.seesaa.net/article/57546363.html

単に、チェックして、メインクラスを指定して、
エキスポートを完了させれば、良いみたいですよ。

自分で、マニュフェストファイルを作ったりしていたので、
マニュアルで、jarファイルを作っているのかと
思いました。

しかし不思議なのですが。
コマンドラインから、実行できて、
ダブルクリックで、実行できない理由がわかりません。

もし動作しなかったら、プログラムソースに問題があるのかな??
ソースを補足で、公開してください。

この回答への補足

アドバイスありがとうございます。ソースの方は、

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 …
を参考にしました。

補足日時:2008/08/10 12:38
    • good
    • 0
この回答へのお礼

申し訳ございません。追加補足ですが、最初はコマンドラインからjarファイルを作成しました。それでうまくいかなかったので今回質問投稿しまして、tom11さんからいただいたアドバイスをもとに、今度はEclipseを使って、jarファイルを作成しました。
Eclipseを使って、jarファイルを作成した参考サイトは、tom11さんが教えて下さりましたサイトと同じサイトでした。

お礼日時:2008/08/10 13:00

こんにちは、



jarファイルをダブルクリックで、結果を見たいとき
GUIのプログラムをお勧めします。

コンソールアプリだと、私も試して見ましたが。
窓は、開きません。
エラーも出ません。

>コマンドラインが一瞬立ち上がってすぐに消えたり

この現象は、もしかすると、コンソールアプリなので、
ドス窓が、開いて実行して、すぐ、ドス窓が
閉じる現象かもしれません
プログラムが、途中で止まらず終了しているのかもしれません。

javaを勉強するなら、IDEは、必須です。
エクリプスでもネットビーンでもどちらも無料だし、
jarファイルも、自動で簡単に作成できて、
ミスが少なくなります。

IDEを使うことをお勧めします。

この回答への補足

アドバイスありがとうございます。
プログラムはGUIプログラムです。
Eclipseで、プロジェクトの上で右クリックしてエクスポートからjarファイルを作って、ダブルクリックしてみましたが、
「Could not find the main class. Program will exit.」というダイアログが出現して、実行できませんでした。
Eclipseの「実行」ボタンでは動きますし、コマンドラインからでも実行できるプログラムなのですが、もしおかしい所がございましたらまたアドバイスよろしくお願いいたします。

補足日時:2008/08/10 00:14
    • good
    • 0

最後の、Main-Class: HelloWorld の後は、改行してあるだろうか?


それと、このHelloWorldは、packageは指定してないんだろうか? 例えば、jp.hoge.HelloWorldとかであったりしないか?

この回答への補足

アドバイスありがとうございます。
Main-Class:HelloWorld のあと、改行しています。(ちゃんと反映されているかどうかチェックするため一度ラカで解凍して中身も確認しています。)
あとパッケージは指定しておりません。

補足日時:2008/08/09 18:19
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!