2012-04-12 29 views
16

mac端末を使用して.jarファイルを作成しようとしていますが、問題が少しあります。私はステップhereに従ったが、成功しなかった。このエラーメッセージが表示されます:端末を使用して.jarファイルを作成する方法

Failed to load Main-Class manifest attribute from 
aclient.jar 

これはどうやってやっていますか?私のJavaプログラムはMain.javaと呼ばれ、.classファイルにコンパイルされています。今私は何をしますか?あなたがメイン クラスを定義するテキストファイルを持っている必要があり

おかげ

答えて

40

1)必要なすべてのファイルがディレクトリ内、あなたはターミナル/コマンドプロンプトを開いていると、そのディレクトリに移動していることを確認してください。

2)これは、JARファイルに必要なの.classファイルを生成する)

javac HelloWorld.java 

3と例えばHelloWorld.javaため、の.javaクラスをコンパイル。

4)次

Main-Class: HelloWorld 

または任意のファイルの名前がある次のテキストエディタと入力を使用して(拡張子.txtを使用して保存)マニフェストファイルを作成します。

jar cfm HelloWorld.jar Manifest.txt HelloWorld.class 

6)ファイルを実行します: creating a jar filesetting an applications entry point:何がこれらのウェブサイトを参照してください不明確と思われる場合は

java -jar HelloWorld.jar 

5)次は、このコードを使用してJARファイルを作成します。

これは他人に役立つことを願っています。

編集:たぶん、この

jar cfm HelloWorld.jar Manifest.txt *.class 
+0

ありがとう!プロジェクトに複数のJavaファイルがあるため、私はあなたの指示に従っていくらかの問題に遭遇しました。最初は私がメインクラスをコンパイルする必要があると思っていましたが、複数のJavaファイルがある場合は、 "javac HelloWorld.java"の代わりにコンパイルする必要があります。 "javac * .java"と "jar cfm HelloWorld.jar Manifest.txt HelloWorld.class "は" jar cfm HelloWorld.jar Manifest.txt * .class "になります。メインファイルをマニフェストファイルに記述するだけで済みます。誰かが私がやったのと同じミスをしているなら、これが役立つことを願っています。 – inga

+1

@inga私はあなたのコメントを含めるために私の答えを更新しました。情報のおかげで! – Katana24

2

。例えば

% cat MyMain 
Main-Class: HelloWorld 

その後、

%jar cvfm foo.jar MyMain *.class 
%java -jar foo.jar 
Hello world 

参照:http://java.sun.com/j2se/1.4.2/runtime.html#example

+0

:それは私のため

すなわちメインクラスを働きました。テキストファイルについては、Main-Class:HelloWorldの内容だけです。そこに他のテキストがあるはずです。また、.txtファイルや.mfなどで保存する必要がありますか? – Katana24

+1

Btw私はまだあなたのアドバイスに従った後でもメインクラスのマニフェストエラーをうまくいかなくなっています:/ – Katana24

+0

%jar xvf foo.jarを試してください 作成:META-INF/ inflated:META-INF/MANIFEST.MF inflated: HelloWorld.classそしてマニフェストのように見えるマニフェストを見てください。バージョン:1.0 作成者:1.6.0_31(Apple Inc.) メインクラス:HelloWorld –

3

続い

javac *.java 

が、それはjarファイル内に複数のファイルをインクルードするために、あなたが使用する必要があることは注目に値しますインガさんのコメントに続いてマニフェストファイルを再作成するのに役立ちます:

警告:テキストファイルはneラインまたはキャリッジリターン。新しい行または改行で終了しない場合、最後の行は正しく解析されません。

4

はい、クラス名の末尾に新しい行を使用する必要があります...私はあなたのリンクをたどっ、簡単な例を作成したHelloWorld

It will look like this in Notepad++ 
1.Main-Class: HelloWorld 
2. 
関連する問題