ホームページ  >  記事  >  Java  >  コマンドラインから Maven プロジェクトを実行するときに NoClassDefFoundError を解決する方法は?

コマンドラインから Maven プロジェクトを実行するときに NoClassDefFoundError を解決する方法は?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-25 10:33:31801ブラウズ

How to Solve NoClassDefFoundError When Running Maven Projects  from the Command Line?

Maven の依存関係の問題: NoClassDefFoundError について

Maven をプロジェクトに統合する場合、開発者はアプリケーションを実行しようとすると NoClassDefFoundError が発生する可能性があります。コマンドライン。この問題は、生成された JAR ファイル内の依存関係を自動的にパッケージ化しない Maven のデフォルトの動作が原因で発生します。

根本原因

NoClassDefFoundError は、Java仮想マシン (JVM) はアプリケーションのコードを実行しようとしますが、必要なライブラリの依存関係のクラスを見つけることができません。これらのクラスは、手動または自動で決定された、指定されたクラスパス上には見つかりません。

Maven のデフォルトの動作

仕様上、Maven はプロジェクトの依存関係が次の場所で利用可能であると想定しています。システム全体のクラスパス、またはビルド プロセス中に使用される Maven リポジトリ内。ただし、コマンド ラインからアプリケーションを実行する場合、これらの依存関係はデフォルトでは利用できない場合があります。

解決策: 依存関係のシェーディング

この問題を解決するには、開発者は依存関係をシェーディングできます。ライブラリ コードを出力 JAR ファイルに追加します。これは、必要なすべてのライブラリを単一の JAR 内にバンドルできる効果的なアプローチです。

Maven Shade Plugin の使用

依存関係シェーディングを実現するために、開発者はmaven-shade-plugin を Maven プロジェクトに追加します。このプラグインは、プロジェクトのクラスと依存関係の両方をパッケージ化する「uber-JAR」を生成する簡単な構成プロセスを提供します。

<code class="xml"><project>
  ...
  <build>
    <plugins>
      <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>
    </plugins>
  </build>
  ...
</project></code>

コマンドの再実行

シェード プラグインが設定されて実行されると、開発者はコマンドを再実行してアプリケーションをビルドして実行できます。結果として得られる JAR には、必要な依存関係がすべて含まれ、NoClassDefFoundError が排除されます。

追加構成

maven-shade-plugin は、シェーディング プロセスをさらに調整するための追加の構成オプションを提供します。開発者は、含める JAR を指定したり、JAR ファイルの Main-Class を定義したりすることができます。包括的なドキュメントは、プラグインの Web サイトで入手できます。

以上がコマンドラインから Maven プロジェクトを実行するときに NoClassDefFoundError を解決する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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