web-dev-qa-db-ja.com

JARファイルからメインクラスマニフェスト属性のロードに失敗したのはなぜですか?

jar cf jar-file input-filesという方法でJARファイルを作成しました。今、私はそれを実行しようとしています。実行しても動作しません(jreコマンドが見つかりません):

jre -cp app.jar MainClass

これも機能しません:

Java -jar main.jar

(main.jarからMain-Classマニフェスト属性をロードできませんでした)。

私もそれを知った

JARファイルとしてパッケージ化されたアプリケーションを実行するには(バージョン1.2-Main-Classマニフェストヘッダーが必要)

「Main-Classマニフェストヘッダー」とは何ですか?どのように作成し、どこに配置しますか?

85
Roman

私はあなたの症状を信じているかどうかわかりません:

  • jreコマンドが見つからない場合、jre -cp app.jarを実行しても同じエラーが発生します
  • JAR ファイルをクラスパスに追加するだけでは、表示されるエラーは発生しません。

実行すると、このエラーが表示されると思います。

Java -jar app.jar

Main-Classヘッダーは、JARファイルのマニフェストに含まれている必要があります。これは、他の必要なライブラリなどのメタデータです。適切なマニフェストを作成する方法については、 Sunのドキュメント を参照してください。基本的に、次のような行を含むテキストファイルを作成する必要があります。

Main-Class: MainClass

次に実行する

jar cfm app.jar manifest.txt *.class
62
Jon Skeet
  1. クラスパスを設定してコンパイルする

    javac -classpath "C:\ Program Files\Java\jdk1.6.0 _pdateVersion\tools.jar" yourApp.Java

  2. manifest.txtを作成します

    メインクラス:yourApp newline

  3. yourApp.jarを作成します

    jar cvf0m yourApp.jar manifest.txt yourApp.class

  4. yourApp.jarを実行します

    Java -jar yourApp.jar

35
weirdFactory

以下で実行できます:

Java -cp .;app.jar package.MainClass

JARファイルにマニフェストがなければ、私にとってはうまくいきます。

9
Dainius

このエラーが発生したのは、引数の順序が間違っていたためです。

正しい

Java maui.main.Examples tagging -jar maui-1.0.jar 

違う

Java -jar maui-1.0.jar maui.main.Examples tagging 
6

適切なマニフェストファイルを使用して、実行可能なJARファイルを正しく作成したことを確認する最も簡単な方法は、 Eclipse を使用してビルドすることです。 Eclipseプロジェクトでは、基本的にメニューから[ファイル/エクスポート]を選択し、プロンプトに従います。

そうすれば、JARファイルが正しいことを確認でき、まだ問題がある場合は別の場所を探すことができます。このプロセスの詳細は、FAQスタンドアロンSWTプログラムの実行可能JARファイルを作成するにはどうすればよいですか?

1
Greg Burdett

試して

Java -cp .:mail-1.4.1.jar JavaxMailHTML 

manifestファイルは必要ありません。

0
user4581964

私が走ったときに同じエラーが発生していました:
jar cvfm test.jar Test.class Manifest.txt

これを解決したのはこれです:
jar cvfm test.jar Manifest.txt Test.class

私のマニフェストには、Oracleドキュメントに記載されているエントリポイントがあります(ファイルの末尾に改行文字があることを確認してください)。
メインクラス:テスト

0
ObviousChild

私は同じ問題に直面しました。このUNIXコマンドは、メインクラスを見つけることができません。これは、ランタイムとコンパイル時のJDKバージョンが異なるためです。 Javaコンパイラーのバージョンを変更した後、Eclipseでjarを作成します。次のリンクが役に立ちました。

http://crunchify.com/exception-in-thread-main-Java-lang-unsupportedclassversionerror-comcrunchifymain-unsupported-major-minor-version-51-0/

この手順の後に作成されたjarを実行してから実行してください

0
Harshita Sethi

クラスパスがマニフェストで完全に指定されている場合、おそらくJavaランタイム環境の最終バージョンが必要です。 jre 8を再インストールすると問題が解決しました。

0

NetBeansでもこのエラーが発生していることがわかりました。以下が役に立つことを願っています。

  1. [プロジェクトの構成]に移動するときに、実行するメインクラスを設定してください。
  2. ビルドまたはクリーンビルドを実行する
  3. Jarファイルを希望する場所に配置して、コマンドラインでJava -jar "YourProject.jar"を再試行します。

これは、NetBeansで使用している他の「テスト」プログラムがあり、プロジェクト構成の実行部分のメインクラスが正しく設定されていることを確認する必要があるために発生する問題でした。

多くの祝福、ジョンP

0
john p

Eclipseを使用している場合は、以下を試してください。1.プロジェクトを右クリック->エクスポートを選択2.エクスポート先の選択でRunnable Jarファイルを選択3. jarの名前を入力し、「Package required ...」を選択->終了

お役に立てれば...!

0
Barani r