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!