dポイントプレゼントキャンペーン実施中!

はじめまして。
さっそく質問させていただきます。

Javaでswingを使用してGUIアプリケーションを作成しました。
.exeファイルのようにダブルクリックで起動できるように、jarファイルを作成したのですが、開こうとしてファイルをダブルクリックすると、「failed to load Main-Class manifest attribute from (C:からjarファイルまでの階層)」というエラーがでて実行することができません。

階層は

C:\a\b

フォルダ b の中に「c.class」「d.class」「MANIFEST.MF」の3つがあります。
c.classがmainメソッドを持っているのでマニフェストファイルには、「Main-Class: c」と書き込み、コマンドプロンプトから「jar cvfm c.jar MANIFEST.MF *.class」と入力、jarファイルが作成されたのですが、ダブルクリックすると上記のエラーがでてしまいます。
どのようにすればエラーなく実行することができるでしょうか?

開発環境は、Windows XP SP3, jdk1.6.0_16, 統合開発環境は使用していません。

よろしくお願いします。

A 回答 (7件)

自分フォローですが、


Class-Path:と./の間にスペースを入れることです、
    • good
    • 0
この回答へのお礼

お返事遅くなり申し訳ございません;

こちらでもいろいろと調べた結果、マニフェストファイルの「Main-Class: クラス名」この「クラス名」の後に改行を入れていなかったのがよくなかったみたいです。
書き直し改行も入れた結果、jarファイルのエラーもなくなり無事起動することができました。

数々の助言、非常に参考にさせていただきました。
本当にありがとうございます!

お礼日時:2009/12/28 23:32

これはどうですか?



MANIFEST.MF ファイルに Class-Path:./ を追加

jarの作成コマンドを下記にする:
jar cvfm c.jar ./MANIFEST.MF *.class
    • good
    • 0

訂正:jar cvfm c.jar MANIFEST.MF *.class ./ など


 → jar cvfm c.jar MANIFEST.MF ./ など
    • good
    • 0

出来上がった jarファイルを zip解凍すると何かわかるかもしれません。



 後、固めるときは jar cvfm c.jar MANIFEST.MF *.class
の最後の引数[*.class]を ルートディレクトリで指定するとよいかもしれません jar cvfm c.jar MANIFEST.MF *.class ./ など。

後は 直接関係ないと思いますが、
  実行時に クラスPathも必要になりますので(Swing)
   MANIFESTに追加しとくと よいと思いました。 
    • good
    • 0

追伸


何か、統合開発環境を利用しない理由があるのですか??
    • good
    • 0

a,b,c,dは、正式なファイル名又はフォルダーですか???



ソースファイルには、package を利用していますか??
もし利用していたら、package名を???


jarファイルで実行を試みる前に

java ?????? で実行できますか???

実行できたら ?????の部分を公開してください。

javaのクラス名を勝手に名前を変えていませんか??
    • good
    • 0

jar 作り方 で、googleで検索すると


沢山ヒットしますし。
詳しいし、早いですよ。

この回答への補足

お早い回答ありがとうございます。
フレームを表示するだけの簡単なアプリケーションを作って、検索でヒットしたサイト様の方法をいくらか試してみましたが、やはり同じエラーがでてしまいます。
C:\Java\sampleにMANIFEST.MFを、C:\Java\sample\exampleにsample1.classを置いて試してみました。MANIFEST.MFには「Main-Class: example.sample1」と書いています。

あるサイト様からjarファイルをダウンロードさせていただき、展開したところMANIFEST.MFには「Main-Class: クラス名」と書かれているのに対し、こちらのjarファイルに含まれている、MANIFEST.MFには「Main-Class: 」の記述がなかったりしています;

補足日時:2009/12/26 22:04
    • good
    • 0

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