ホームページ  >  記事  >  Java  >  JAR ファイルの実行時に Maven 依存関係の「NoClassDefFoundError」を解決するにはどうすればよいですか?

JAR ファイルの実行時に Maven 依存関係の「NoClassDefFoundError」を解決するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-26 07:37:30486ブラウズ

How to resolve

Maven 依存関係の NoClassDefFoundError を解決する

Maven は、Java プロジェクトの依存関係を自動的にダウンロードして管理できる、人気のあるビルド自動化ツールです。ただし、Maven で構築された JAR ファイルをコマンド ラインで実行すると、NoClassDefFoundError が発生する場合があります。

このエラーは通常、Maven がデフォルトで構築する JAR に依存関係をバンドルしないために発生します。クラスパスに依存関係がないと、Java 仮想マシン (JVM) はコードの実行時にライブラリ クラス ファイルを見つけることができません。

この問題を解決するには、- を使用してクラスパス上にライブラリを手動で指定します。 cpパラメータ。ただし、このアプローチは面倒な場合があります。

より効率的な解決策は、maven-shade-plugin を使用してライブラリ コードを出力 JAR ファイルにシェーディングすることです。このプラグインは、クラスとライブラリ クラスの両方を含む「uber-JAR」を自動的に作成します。

Maven-shade-plugin を POM ファイルに追加するには、次の手順に従います。

  1. pom.xml ファイルを開きます。
  2. プラグインの依存関係を追加します:
<code class="xml"><dependency>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-shade-plugin</artifactId>
  <version>3.5.2</version>
</dependency></code>
  1. ビルド プラグインの実行を定義します:
<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>
  1. pom.xml ファイルを保存します。
  2. 次のコマンドを実行します。
<code class="bash">mvn package
java -cp target/jar-filename.jar your.main.class</code>

依存関係をシェーディングすることで、必要なすべてを含む実行可能な JAR を作成します。図書館。これにより NoClassDefFoundError が解決され、アプリケーションを独立して実行できるようになります。

以上がJAR ファイルの実行時に Maven 依存関係の「NoClassDefFoundError」を解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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