
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上からエクスポートする際にはちゃんと場所を指定しています。何が問題なのか解りません。
将来的には、違うマシン上で動作するアプリケーションを作りたいと思っているのですが、最初でいきなり躓いてしまいました。
どなたか教えて頂けないでしょうか。
No.3ベストアンサー
- 回答日時:
swtのライブラリを使用するためのマニフェストファイルの書き方について、過去に調査、回答いたしました。
http://okwave.jp/qa2457294.html
関連知識としてご参考いただければ幸いです。

No.2
- 回答日時:
Class-Path: にeclipseのパスしか指定してないから、カレントは探さずに、そこだけ探して
「main()関数を持つクラスを発見できない」と返ってくるのでしょう。
No1の方の回答のように、コマンドラインで -classpath を指定すれば実行できますけど、それだと、ダブルクリックでの実行は出来ません。
javaのドキュメントによれば、ここには「相対 URL を指定する。URL は 1 つ以上の空白で区切る。」
とあるので、「./」 でカレントパスを意味し、この指定により、自分のアーカイブ内のクラスを探します。
Class-Path: ./ ./xxx.jar
あと、他のPC(eclipseが入っていない)で実行することを考えるなら、eclipseのライブラリもそのアーカイバに含めるか、再配布が許されていないなら、使わずに作る必要があるでしょう。
windowを開くだけのプログラムに、そこまでのライブラリが必要とは思えないけど。
No.1
- 回答日時:
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!");
}
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
classファイルについて
-
JSP・JAVAクラスのソースコード...
-
jdbcドライバのjarファイルにク...
-
JADで*.jarごとデコンパイルす...
-
Javaアプリケーションのアイコ...
-
<Tomcat>存在しないJSPをイン...
-
SVFの設定について:クラスパス...
-
javaでuseBeanエラーの解決方法
-
jspで関数部分だけ分離すること...
-
Javascriptの値をJava(JSP)へ渡...
-
同一パッケージ内の継承について
-
html上で、バッチやexeファイル...
-
Javaのエラーについてです
-
NetBeans IDE 3.6で
-
vs codeはオフラインでも使用で...
-
メインクラス○○.classが見つか...
-
「ワークスペースをビルド中」...
-
マイクラjavaでForgeを入れたい...
-
この <windows.h> はどこに在る...
-
.jarファイルの中身って書き換...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Eclipse・プロジェクトで、フォ...
-
classファイルについて
-
SVFの設定について:クラスパス...
-
javaクラスファイルをEclipseで...
-
eclipse でclassesフォルダーが...
-
earファイルを展開する方法
-
Eclipse「リフレッシュ」と「ク...
-
jdbcドライバのjarファイルにク...
-
EclipseでHTTP404エラーが出る。
-
『ClassNotFoundException: org...
-
javax.mailがimportできない
-
【Eclipse】パッケージ・エクス...
-
VisualStudioでC++クラスを追加...
-
「main メソッドを持つクラスが...
-
java クラスファイルとソースコ...
-
結局 deleteしないとダメ? フ...
-
FileWriterで8kb以上書き込むに...
-
「削除するか、クラスパスの正...
-
【Eclipse】逆コンパイルでエラ...
-
Eclipseで、クラスを新規作成す...
おすすめ情報