Maven 依存関係に関する NoClassDefFoundError
Maven 依存関係をプロジェクトに統合する場合、潜在的な依存関係解決の問題に対処することが不可欠です。よくある問題の 1 つは、Eclipse の外部でアプリケーションを実行するときに「NoClassDefFoundError」が発生することです。
問題について
「NoClassDefFoundError」は、Java 仮想マシン (JVM) が実行されているときに発生します。 ) 実行中のプログラムで参照されるクラスのバイトコード定義を見つけることができません。これは、実行時に指定されたクラスパスでクラスが使用できない場合に発生する可能性があります。
上記のケースでは、依存関係が POM ファイルで宣言されていたとしても、ジャクソン ライブラリからクラス定義が欠落していることがエラーの原因となります。 。これは、依存関係が正常にダウンロードおよびビルドされたものの、パッケージ化された JAR ファイルに含まれていないことを示します。
Maven-Shade-Plugin による問題の解決
Maven は、生成する JAR ファイルに依存関係を自動的に含めません。この問題を解決するには、maven-shade-plugin の使用を検討してください。このプラグインを使用すると、ライブラリ コードを出力 JAR ファイルに「シェーディング」できます。
ステップ 1: Maven-Shade-Plugin を登録します
以下を POM に追加しますmaven-shade-plugin を登録するファイル:
<code class="xml"><plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>3.5.2</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> </execution> </executions> </plugin></code>
ステップ 2: Maven を再実行
プラグインを登録した後、次のコマンドを再実行します:
$ mvn package $ java -cp target/bil138_4-0.0.1-SNAPSHOT.jar tr.edu.hacettepe.cs.b21127113.bil138_4.App
これにより、「NoClassDefFoundError」が解決され、アプリケーションがコマンド ラインから正常に実行できるようになります。
さらなる構成
maven-shade-プラグインは、依存関係の組み込みを微調整したり、実行可能な JAR ファイルの Main-Class を指定したりするための高度な構成オプションを提供します。詳細については、プラグインの公式ドキュメントを参照してください。
以上がEclipse の外部でアプリケーションを実行すると、Maven の依存関係に対して「NoClassDefFoundError」が発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。