ホームページ  >  記事  >  Java  >  Eclipse の外部でアプリケーションを実行すると、Maven の依存関係に対して「NoClassDefFoundError」が発生するのはなぜですか?

Eclipse の外部でアプリケーションを実行すると、Maven の依存関係に対して「NoClassDefFoundError」が発生するのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-25 08:44:29339ブラウズ

Why do I get a `NoClassDefFoundError` for Maven dependencies when running my application outside of Eclipse?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。