Maison  >  Article  >  Java  >  Comment résoudre NoClassDefFoundError lors de l'exécution de projets Maven à partir de la ligne de commande ?

Comment résoudre NoClassDefFoundError lors de l'exécution de projets Maven à partir de la ligne de commande ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-25 10:33:31801parcourir

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

Problèmes de dépendance dans Maven : comprendre NoClassDefFoundError

Lors de l'intégration de Maven dans un projet, les développeurs peuvent rencontrer l'erreur NoClassDefFoundError en essayant d'exécuter leur application à partir de la ligne de commande. Ce problème survient en raison du comportement par défaut de Maven, qui n'emballe pas automatiquement les dépendances dans le fichier JAR généré.

Cause première

L'erreur NoClassDefFoundError se produit lorsque l'erreur Java La machine virtuelle (JVM) tente d'exécuter le code de l'application mais ne parvient pas à localiser les classes pour les dépendances de bibliothèque requises. Ces classes ne se trouvent pas sur le chemin de classe fourni, déterminé manuellement ou automatiquement.

Comportement par défaut de Maven

De par sa conception, Maven suppose que les dépendances du projet seront disponibles sur le chemin de classe à l'échelle du système ou dans le référentiel Maven utilisé pendant le processus de construction. Cependant, lors de l'exécution de l'application à partir de la ligne de commande, ces dépendances peuvent ne pas être disponibles par défaut.

Solution : ombrage des dépendances

Pour résoudre ce problème, les développeurs peuvent ombrer le code de la bibliothèque dans le fichier JAR de sortie. Il s'agit d'une approche efficace qui permet de regrouper toutes les bibliothèques requises dans un seul JAR.

À l'aide du plugin Maven Shade

Pour réaliser l'ombrage des dépendances, les développeurs peuvent incorporer le maven-shade-plugin dans leur projet Maven. Ce plugin fournit un processus de configuration simple pour générer un "uber-JAR" qui regroupe à la fois les classes du projet et les dépendances :

<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>

Réexécuter la commande

Une fois le plugin shade configuré et exécuté, les développeurs peuvent réexécuter les commandes pour créer et exécuter l'application. Le JAR résultant inclura toutes les dépendances nécessaires, éliminant NoClassDefFoundError.

Configuration supplémentaire

Le maven-shade-plugin offre des options de configuration supplémentaires pour personnaliser davantage le processus d'ombrage. Les développeurs peuvent spécifier les fichiers JAR à inclure, définir une classe principale pour le fichier JAR, etc. Une documentation complète est disponible sur le site Web du plugin.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn