jarファイルの作成

このQ&Aのポイント
  • Javaでswingを使用してGUIアプリケーションを作成しましたが、jarファイルを作成しても実行できません。
  • 「failed to load Main-Class manifest attribute from (C:からjarファイルまでの階層)」というエラーが表示されます。
  • マニフェストファイルには、「Main-Class: c」と書き込み、コマンドプロンプトから「jar cvfm c.jar MANIFEST.MF *.class」と入力し、jarファイルが作成されています。
回答を見る
  • ベストアンサー

jarファイルの作成

はじめまして。 さっそく質問させていただきます。 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, 統合開発環境は使用していません。 よろしくお願いします。

  • Java
  • 回答数7
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • jdbckit
  • ベストアンサー率100% (1/1)
回答No.7

自分フォローですが、 Class-Path:と./の間にスペースを入れることです、

misodo11
質問者

お礼

お返事遅くなり申し訳ございません; こちらでもいろいろと調べた結果、マニフェストファイルの「Main-Class: クラス名」この「クラス名」の後に改行を入れていなかったのがよくなかったみたいです。 書き直し改行も入れた結果、jarファイルのエラーもなくなり無事起動することができました。 数々の助言、非常に参考にさせていただきました。 本当にありがとうございます!

その他の回答 (6)

  • jdbckit
  • ベストアンサー率100% (1/1)
回答No.6

これはどうですか? MANIFEST.MF ファイルに Class-Path:./ を追加 jarの作成コマンドを下記にする: jar cvfm c.jar ./MANIFEST.MF *.class

  • mahojula
  • ベストアンサー率32% (21/65)
回答No.5

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

  • mahojula
  • ベストアンサー率32% (21/65)
回答No.4

出来上がった jarファイルを zip解凍すると何かわかるかもしれません。。  後、固めるときは jar cvfm c.jar MANIFEST.MF *.class の最後の引数[*.class]を ルートディレクトリで指定するとよいかもしれません jar cvfm c.jar MANIFEST.MF *.class ./ など。 後は 直接関係ないと思いますが、   実行時に クラスPathも必要になりますので(Swing)    MANIFESTに追加しとくと よいと思いました。 

  • tom11
  • ベストアンサー率53% (134/251)
回答No.3

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

  • tom11
  • ベストアンサー率53% (134/251)
回答No.2

a,b,c,dは、正式なファイル名又はフォルダーですか??? ソースファイルには、package を利用していますか?? もし利用していたら、package名を??? jarファイルで実行を試みる前に java ?????? で実行できますか??? 実行できたら ?????の部分を公開してください。 javaのクラス名を勝手に名前を変えていませんか??

  • tom11
  • ベストアンサー率53% (134/251)
回答No.1

jar 作り方 で、googleで検索すると 沢山ヒットしますし。 詳しいし、早いですよ。

misodo11
質問者

補足

お早い回答ありがとうございます。 フレームを表示するだけの簡単なアプリケーションを作って、検索でヒットしたサイト様の方法をいくらか試してみましたが、やはり同じエラーがでてしまいます。 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: 」の記述がなかったりしています;

関連するQ&A

  • Jarファイルの作成

    今Swingを使ってシンプルなテキストエディタを作成したのですが、それをjarファイルの作成をしているのですがエラーになるのでアドバイスをお願いします。 現在行っていることは MyEditor.javaを作成しコンパイル実行しました MyEditor..classを作成 マニフェストファイルの作成 ファイル名に test.mfにしています。 ファイルには Main-Class: MyEditor だけを記述しています。 コマンドプロンブスに jar cvfm MyEditor.jar test.mf *.class で実行したら java.io.FileNotFounException:test.mf*.class(ファイル名、ディレクトリ名、またはボリューム、ラベルの構文が間違っています。)となります。 これはファイル名が存在していないことだと思うのですが別にファイル名とかも間違いはないと思うのですが他に原因はありますか?ディレクトリ階層なども確認していますが間違いありません

    • ベストアンサー
    • Java
  • jarファイルをダブルクリックで実行したいのですが

    こんにちは。今、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  となっていました。 もし悪い所がございましたら、アドバイスの方よろしくお願いいたします。

    • ベストアンサー
    • Java
  • Eclipseで、配布可能なJARファイルを作成する方法が解りません。

    Eclipseで、何も無いウインドウを開くというだけのアプリケーションを作ろうとしました。 ライブラリに、 org.eclipse.swt.win32.win32.x86_3.2.1.v3235.jar を追加しております。 配布できる形式にしたいため、Jarファイルを作成しました。 プロジェクトにMETA-INFというフォルダを作成し、そこに「Manifest.mf」というファイルを作成し、以下のように記述しました。 Manifest-Version: 1.0 Class-Path: "C:\eclipse\plugins\org.eclipse.swt.win32.win32.x86_3.2.1.v3235.jar" Main-Class: view.TestWindow ちなみに、「view.TestWindow」というのがmainメソッドのあるクラスの名前です。 JARファイルをエクスポートして、コマンドライン上から以下のように入力しました。 > java -jar TestWindow.jar 結果は、以下のようなエラーが表示されました。 Failed to load Main-Class manifest attribute from TestWindow.jar 多分、「Main-Class」の情報がマニフェストファイルから見つからないと言っているんだと思いますが、Eclipse上からエクスポートする際にはちゃんと場所を指定しています。何が問題なのか解りません。 将来的には、違うマシン上で動作するアプリケーションを作りたいと思っているのですが、最初でいきなり躓いてしまいました。 どなたか教えて頂けないでしょうか。

    • ベストアンサー
    • Java
  • jarファイルの起動方法

    jarファイルを作成して、ダブルクリックで起動できる ようにしたいのですが、作成したjarファイルをクリックしても何の反応もありません。エラーメッセージが 出るわけでもなく、ただ、プログラムが実行されないのです。jarファイルの作成過程は以下のとおりです。 jar cf temp.jar testclass.class jar ufm temp.jar manifest.txt マニフェストファイルの最後には改行をいれてあります。

    • ベストアンサー
    • Java
  • .mfファイルのMain-Class : クラス名について

    .mfファイルを作成して、 jar cvfm hogehoge.jar *.class を作成した場合、ファイルをダブルクリックすれば、そのプログラムを実行できますよねぇ。そこで、質問なんですが、この.jarファイルを他のJDKの入っていないマシン上で実行する事はできるのでしょうか? ちなみに、僕の友達にこの.jarファイルを実行してもらったときには、できなかったそうです。どうにかして、実行をさせる方法はないのでしょうか? どうか、教えてください。お願いします。

    • ベストアンサー
    • Java
  • Jarコマンドでマニフェストファイルを更新

    jdk 1.6.0.26のjarコマンドを使って、既存のjarファイルのマニフェストファイルを更新したいのですが、下記のように警告が表示されてしまいます。 (下記例は、既存のtest.jarにマニフェストファイルmanifest.txtを更新する例です) >jar uvmf manifest.txt test.jar 2011/08/15 1:54:26 java.util.jar.Attributes read 警告: Duplicate name in Manifest: Main-Class. Ensure that the manifest does not have duplicate entries, and that blank lines separate individual sections in both your manifest and in the META-INF/MANIFEST.MF entry in the jar file. 2011/08/15 1:54:26 java.util.jar.Attributes read 警告: Duplicate name in Manifest: Class-Path. Ensure that the manifest does not have duplicate entries, and that blank lines separate individual sections in both your manifest and in the META-INF/MANIFEST.MF entry in the jar file. マニフェストが更新されました。 ちなみに、既存のtest.jarのマニフェストファイルの内容は、下記のようになっており、 Main-Class: jp.main.MainClass Class-Path: hello.jar manifest.txtの内容は、下記のようになっています。 Main-Class: jp.main.MainClass Class-Path: hello2.jar つまり、Class-Pathの所を別なjarファイルに書き換えたいわけです。 上記のjarコマンドで、警告はでますが、実行するとhello2.jarが動作しているようなので、大丈夫なのですが、警告が出るということは、やり方が悪いのでしょうか?

    • ベストアンサー
    • Java
  • jarダブルクリックで実行できません

    自作のjarファイルだけがダブルクリックで実行できません。長い時間はまっております。お助けください。 javaアプリを配布するためにexeを作ろうと、まずjarファイルを作ってみました。 どんな状況かと申しますと ・他の方が作られたjarファイルはダブルクリックで実行可能です。 ・自作のjarファイルはダブルクリックで実行できません。 「could not find the main class: ○○ Program will exit」 ・自作のjarファイルはコマンドプロンプトの 「java -jar ○○.jar」で実行されます。 そこでお聞きしたいのが下記URLのゲームに関してです。 http://www.ipl.co.jp/item/JavaShootingGame.html 問題点を探るために、まず公開されているソースをコンパイルし、jarを生成しました。 マニフェストファイルには「Main-Class: Game」を改行付きで加え自作しました。 上記の自作jarのようにダブルクリックで実行できず、 コマンドで実行できます。 次に、公開されているjarを「xvf」コマンドで解凍するとdatファイルと 色々書かれたMANIFEST、 classファイルがでてきました。 ためしに、datを削除し、MANIFESTを自作のものに上書きしました。 これで上記と同条件のはずですが、これでつくったjarファイルは なんとダブルクリックで実行できます。 Classファイルを逆コンパイルしてソースを比べる。 Eclipseで生成する。 マニフェストにClass-Pathをあらゆるところに通してみる。 以上失敗しました。 この2週間こればかりで、正直気がめいりそうです。 対処法も尽きてしまいました。 どうかお助けください。

    • ベストアンサー
    • Java
  • Jarファイルのマニフェストについて

    マニフェスト内でMain-Classを指定してJarファイルを作成した場合、EXEに近い仕組み(Jarファイルをダブルクリックでプログラムが実行可能)が実現しますが、この際、マニフェスト内でMain-Classに渡すArgmentsやJavawに適用するオプション(-Dなど・・)を指定することは可能なのでしょうか? また可能な場合、どのように指定すればよいのでしょうか?

    • ベストアンサー
    • Java
  • classファイルとJARファイルで実行した出力が異なる

    Javaのコマンドラインツールです。 CLASSファイルのままで実行 C:\> java -classpath .;mail.jar;activation.jar Mailx すると正常な出力が得られるプログラムをJARファイルにして C:\> jar xvf activation.jar C:\> jar xvf mail.jar C:\> jar cfm Mailx.jar Mailx.mf *.class com javax C:\> jar tvf Mailx.jar 実行 C:\>java -classpath Mailx.jar Mailx すると、正常な出力が得られなくなり、メールアドレスが出力されるはずが、メモリのアドレスのような値が出力  javax.mail.util.SharedByteArrayInputStream@1bf52a5 されるようになります。 なぜなのでしょうか? <Mailx.mf> Manifest-Version: 1.0 Main-Class: Mailx

  • Jarファイルについて。

    Jarファイルについて。 Jarで固めらたアプリの実行ログ(アプリスタート時に)に、JarファイルのMANIFEST.MF が持つCreate情報(コンパイルに使用したJavaバージョン)を書き出したいと思っています。 コマンド等で取り出す方法をご存知の方、ご教授お願いできますでしょうか。 MANIFEST.MFファイルの中身 ----------------- Manifest-Version: 1.0 Created-By: 1.6.0_18 (Sun Microsystems Inc.) -----------------

    • ベストアンサー
    • Java

専門家に質問してみよう