jar- ファイルを実行できません: "メインマニフェスト属性がありません;
あるアプリケーションをインストールしたのですが、実行しようとすると何も起こりません。コマンドラインから とコマンドラインから実行すると、何も起こりません;
以下のメッセージが表示されます: mainマニフェスト属性がありません;
通常、自分でプログラムを作成した場合、マニフェストファイルにmainクラス属性を追加するはずです。しかしこの場合、ファイルはアプリケーションのものなので、それを行うことはできません。また、jarを抽出してmainクラスが見つかるかどうか試してみましたが、クラスが多すぎて、どのクラスも名前に"main"という単語が入っていません。他のシステムでは問題なく動いているので、これを修正する方法があるはずです。
861
20
まず、
java -jar app.jar
ではなく、java -jar "app"
を実行しているのがちょっと奇妙です。次に、jarを実行可能にするには...META-INF/MANIFEST.MFというファイルをjarにする必要がある。
このファイル自体には、(少なくとも)この一行がなければならない:
com.mypackage.MyClass`は、public static void main(String[] args)エントリポイントを保持するクラスです。
CLI、Maven、Ant、Gradleのいずれかを使ってこれを行うには、いくつかの方法があることに注意してください:
CLI**の場合、次のコマンドで実行できます: (tks @[dvvrt][1])
java -jar "app"
ではなく、
java -jar app.jar` とすべきだった。jar
オプションは JAR ファイルが実行可能な JAR ファイルである場合にのみ動作します。つまり、JAR ファイルには
Main-Class` 属性を持つマニフェストファイルが必要です。実行可能な JAR を作成する方法については JAR ファイルでのプログラムのパッケージ化 を参照してください。実行可能なJARでない場合は、以下のような方法でプログラムを実行する必要があります:
ここで、
com.somepackage.SomeClass
はプログラムを実行するためのmain
メソッドを含むクラスです。(com.somepackage.SomeClassは、プログラムを実行するための
main`メソッドを含むクラスです(そのクラスが何であるかはプログラムによって異なります。)または、以下の例に示すように、maven-assembly-pluginを使用できます。
これは、JavaがMANIFEST.MFファイルでMain属性を見つけられないためです。 Main属性は、アプリケーションのエントリポイントとして使用するクラスをjavaに伝えるために必要です。 jarファイル内では、MANIFEST.MFファイルはMETA-INFフォルダーにあります。 jarファイル内の内容をどのように見ることができるか疑問に思います? WinRARでjarファイルを開きます。
MANIFEST.MF内の主な属性は次のようになります。
この行がMANIFEST.MFファイルから欠落している場合、この「メインマニフェスト属性なし」エラーが発生します。
< strike> MANIFEST.MFファイル内でこの属性を指定するのは本当に大きな混乱です。< / strike>。更新:日食でアプリケーションのエントリポイントを指定する本当にきちんとした方法を見つけました。 エクスポートと言うとき。
ここに画像の説明を入力してください。!
Gradleの答えは、次のようなjar / manifest /attributes設定を追加することです。
mavenの場合、これが解決したものです(私にとっては、GitHubのVeetleコードベースの場合)。
乾杯。..
IntelliJ IDEAを使用して瓶を作成するときにこの問題がありました。 この議論を参照してください。
それを解決したのは、JARを選択して、jarアーティファクトを再作成することでした>依存関係のあるモジュールから、META-INF / MANIFEST.MFのデフォルトのディレクトリを受け入れません。 -/ src / main / javaから-/ src / main / resourcesに変更します。
それ以外の場合は、jarにマニフェストファイルが含まれていましたが、-/ src / main / javaにあるファイルではありませんでした。
このコマンドを試して、jar :.を含めてください。
私も同じ問題を抱えていました。 pomファイルに次の行を追加することで、それは機能しました。 プラグインは、必要なすべての手順でアプリケーションのビルドプロセスを確認します。
私にとって、どの回答も本当に役に立ちませんでした。メインクラスとすべてを含むマニフェストファイルを正しい場所に配置しました。 私をつまずかせたのはこれでした:
(ソース)。 マニフェストの最後に改行を追加すると、それが修正されました。
今、同じエラーが発生しました。
gradle
を使用している場合は、gradle.build
に次のものを追加してください。ここで、「com.company.project.MainClass」は、「public static void main(String [] args)」メソッドを使用して、クラスへのパスです。
Mavenを使用している場合は、pomにフォローを含めます。
今日も同じ問題がありました。 私の問題は、META-INFをリソースフォルダに移動することで解決しました。
もしそのjarが規則に従っていなければ、それは実行可能なjarではありません。
私は同じ問題に直面し、それは今修正されています:)。 以下の手順に従ってください。エラーは何にでも発生する可能性がありますが、以下の手順ではプロセスがスムーズになります。 私は修正を見つけるために多くの時間を費やしています。
1.Eclipseを再起動してみてください(Eclipseを使用してJARファイルをビルドしている場合)。 ->実際、これは私のJARファイルの適切なエクスポートに役立ちました。
2.日食の再始動後。, 日食がJavaプロジェクトによってメインクラス/メソッドを認識できるかどうかを確認してください-->。; 右クリック-->。; -->。として実行します。; 構成を実行-->。; メイン-->。; [検索]ボタンをクリックして、日食がJARファイルでメインクラスを検索できるかどうかを確認します。 ->これは、JARファイルがメインクラスへのエントリポイントを持つことの検証用です。
4。 この後、Java DynamicプロジェクトをJARファイルではなく「Runnable JAR」ファイルとしてエクスポートします。
5。 Java起動構成で、メインクラスを選択します。
6。 jarファイルをエクスポートしたら、次のコマンドを使用して実行します。 java -cp [Your JAR] .jar [完全なパッケージ]。メインクラス。 例:java -cp AppleTCRuleAudit.jar com.apple.tcruleaudit.classes.TCRuleAudit。
7。 サポートされていないJavaバージョンのエラーに直面する可能性があります。 修正は、プロジェクトを日食でコンパイルするために使用されるJavaバージョンと一致するように、シェルbashプロファイルのjava_homeを変更することです。
これが役立つことを願っています。! それでも問題があればお知らせください。
私は個人的に、ここでのすべての答えは質問を誤解していると思います。 これに対する答えは、スプリングブートが.jarをどのように構築するかという違いにあります。 Spring Bootがこのようなマニフェストを設定することは誰もが知っています。これは、誰もが仮定とは異なり、これは標準の.jar起動であり、次の場合とそうでない場合があります。
おそらく、クラスパスで
org.springframework.boot.loader.JarLauncher
を使用して実行する必要があります?私も同じ問題を抱えていました。 ここで述べた解決策の多くは全体像を示していなかったので、コマンドラインからjarファイルをパックする方法の概要を説明します。
1。
。class
ファイルをパッケージにしたい場合は、。java
の先頭にパッケージを追加します。2。 「.class」ファイルでコードをコンパイルするには、パッケージ名で指定された構造を使用します。
3。
。jar
ファイルをパッケージ化するときは、jarルーチンに梱包方法を指示する必要があります。 ここでは、オプションセット「cvfeP」を使用します。 これは、パッケージ構造を維持(オプションP
)、エントリポイントを指定して、マニフェストファイルに意味のある情報が含まれるようにします(オプションe
)。 オプションf
ではファイル名を指定でき、オプションc
はアーカイブを作成し、オプションv
は出力を冗長に設定します。 ここで注意すべき重要なことは、「P」と「e」です。4。 zipプログラムで
。jar
ファイルを確認します。 次の構造にする必要があります。マニフェストを手動で編集する場合は、必ず改行を最後に保管してください**そうしないと、javaはそれを認識しません。
5。
。jar
ファイルを実行します。jarファイルを正しく作成していない可能性があります。
次の作品:
実行可能jarファイルjava -jar app.jarなどのコマンドプロンプトを使用してクリックまたは実行して実行する必要があります(「jarのパスにスペースがある場合」を使用します)。 java -jar "C:\ folder name \ app.jar")。 実行可能ジャーが実行されていない場合、つまり、正しく作成されていません。
理解を深めるには、jarファイルを抽出し(または、任意のツールを使用して表示します。Windows7-Zipはすばらしいものです)、/ META-INF / MANIFEST.MFでファイルを確認します。次のようなエントリが見つかった場合。
メインクラス:your.package.name.ClaaswithMain-それで結構です、そうでなければあなたはそれを提供しなければなりません。
MANIFEST.MFファイルにメインクラスのエントリを追加することに注意してください。保存先を確認してください。!
このステップに従うだけです。 を使用してjarファイルを作成します。
jarファイルの実行中は、このように簡単に実行できます。