Maison  >  Article  >  Java  >  Pourquoi est-ce que j'obtiens une erreur « NoClassDefFoundError » pour les dépendances Maven lors de l'exécution de mon application en dehors d'Eclipse ?

Pourquoi est-ce que j'obtiens une erreur « NoClassDefFoundError » pour les dépendances Maven lors de l'exécution de mon application en dehors d'Eclipse ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-25 08:44:29414parcourir

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

NoClassDefFoundError sur la dépendance Maven

Lors de l'intégration de dépendances Maven dans un projet, il est essentiel de résoudre les problèmes potentiels de résolution des dépendances. Un problème courant est la rencontre d'une « NoClassDefFoundError » lors de l'exécution d'une application en dehors d'Eclipse.

Comprendre le problème

La « NoClassDefFoundError » se produit lorsque la machine virtuelle Java (JVM ) ne parvient pas à localiser la définition du bytecode d'une classe référencée dans un programme en cours d'exécution. Cela peut se produire lorsque la classe n'est pas disponible sur le chemin de classe spécifié pendant l'exécution.

Dans le cas décrit, l'erreur est causée par des définitions de classe manquantes dans la bibliothèque Jackson, même si ces dépendances ont été déclarées dans le fichier POM. . Cela indique que les dépendances ont été téléchargées et créées avec succès, mais qu'elles ne sont pas incluses dans le fichier JAR empaqueté.

Résoudre le problème avec Maven-Shade-Plugin

Maven n'inclut pas automatiquement les dépendances dans le fichier JAR qu'il génère. Pour résoudre ce problème, pensez à utiliser le plugin maven-shade-plugin. Ce plugin vous permet de "ombrager" le code de la bibliothèque dans le fichier JAR de sortie.

Étape 1 : Enregistrez le plug-in Maven-Shade

Ajoutez ce qui suit à votre POM fichier pour enregistrer le plugin 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>

Étape 2 : Réexécutez Maven

Réexécutez les commandes suivantes après avoir enregistré le plugin :

$ mvn package
$ java -cp target/bil138_4-0.0.1-SNAPSHOT.jar tr.edu.hacettepe.cs.b21127113.bil138_4.App

Cela devrait résoudre l'erreur 'NoClassDefFoundError' et permettre à l'application de s'exécuter avec succès à partir de la ligne de commande.

Configuration supplémentaire

Le maven-shade- Le plugin offre des options de configuration avancées pour affiner l'inclusion des dépendances, en spécifiant la classe principale pour un fichier JAR exécutable, et bien plus encore. Reportez-vous à la documentation officielle du plugin pour plus de détails.

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