- ベストアンサー
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上からエクスポートする際にはちゃんと場所を指定しています。何が問題なのか解りません。 将来的には、違うマシン上で動作するアプリケーションを作りたいと思っているのですが、最初でいきなり躓いてしまいました。 どなたか教えて頂けないでしょうか。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
swtのライブラリを使用するためのマニフェストファイルの書き方について、過去に調査、回答いたしました。 http://okwave.jp/qa2457294.html 関連知識としてご参考いただければ幸いです。
その他の回答 (2)
- hrm_mmm
- ベストアンサー率63% (292/459)
Class-Path: にeclipseのパスしか指定してないから、カレントは探さずに、そこだけ探して 「main()関数を持つクラスを発見できない」と返ってくるのでしょう。 No1の方の回答のように、コマンドラインで -classpath を指定すれば実行できますけど、それだと、ダブルクリックでの実行は出来ません。 javaのドキュメントによれば、ここには「相対 URL を指定する。URL は 1 つ以上の空白で区切る。」 とあるので、「./」 でカレントパスを意味し、この指定により、自分のアーカイブ内のクラスを探します。 Class-Path: ./ ./xxx.jar あと、他のPC(eclipseが入っていない)で実行することを考えるなら、eclipseのライブラリもそのアーカイバに含めるか、再配布が許されていないなら、使わずに作る必要があるでしょう。 windowを開くだけのプログラムに、そこまでのライブラリが必要とは思えないけど。
お礼
助かりました。 おかげでどうにか実装できました。 本当にありがとう御座います。
- same_goo
- ベストアンサー率50% (2/4)
Eclipseで、配布可能なJARファイルを作成する方法 私は、Eclipse2.xを使ってます。 1.プロジェクト右クリック⇒エクスポート⇒JARファイル 生成されたクラス・ファイルとリソースをエクスポートにチェックON エクスポート先(JARファイルの出力先)を選択 (ここでJARファイル名も決定します。) 終了を押下 でJARファイルが出来ると思います。 ちなみに、コマンドラインから作成する方法は D:\>cd D:\java\project01\classes classファイルのあるフォルダ(ここではD:\java\project01\classes)へ移動し D:\java\project01\classes>jar cvf project.jar * マニフェストが追加されました。 hoge.class を追加中です。(入 = 0) (出 = 0)(0% 格納されました) D:\java\project01\classes>dir hoge.class project.jar JARファイルの中身を確認するには オプション tvf を使用します。 D:\java\project01\classes>jar tvf project.jar 0 Mon Nov 27 14:55:56 JST 2006 META-INF/ 71 Mon Nov 27 14:55:56 JST 2006 META-INF/MANIFEST.MF 0 Mon Nov 27 14:54:50 JST 2006 hoge.class JARファイルに含まれるクラスを実行するには D:\java\project01\classes>java -classpath project.jar hoge hoge! #hoge.java public class hoge { public static void main(String[] args) { System.out.println("hoge!"); } }
お礼
先にこちらを参照するべきでした。 ありがとうございました。