Maison >Java >javaDidacticiel >Comment exécuter un fichier JAR avec des bibliothèques externes et éviter \'java.lang.ClassNotFoundException\' ?

Comment exécuter un fichier JAR avec des bibliothèques externes et éviter \'java.lang.ClassNotFoundException\' ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-03 20:45:03266parcourir

How to Run a JAR File with External Libraries and Avoid

Appel de "java -jar MyFile.jar" avec les options de chemin de classe étendu

Lorsque vous tentez d'exécuter un fichier JAR compilé incorporant des bibliothèques externes et face une "java.lang.ClassNotFoundException", il est crucial de comprendre les principes fondamentaux du processus d'exécution Java.

Java propose deux options pour spécifier les chemins de classe :

  • -jar : inclut le JAR fichier et son chemin de classe défini par le manifeste.
  • -cp : spécifie manuellement le chemin de classe complet, y compris toutes les dépendances.

Utilisation incorrecte

Tenter de combiner simultanément -jar et -cp est incorrect et entraînera l'erreur susmentionnée.

Solution

Il existe deux approches valides pour résoudre ce problème :

1. Chemin de classe défini par le manifeste :

  • Créez un fichier manifeste dans le JAR en spécifiant le chemin de classe requis.
  • Utilisez java -jar pour exécuter le JAR, qui chargera automatiquement le chemin de classe spécifié. dépendances.

2. Chemin de classe explicite :

  • Utilisez java -cp pour définir le chemin de classe complet, y compris le JAR principal et tous les JAR externes.
  • Spécifiez explicitement la classe principale sur la ligne de commande.

Par exemple :

java -cp 'MyProgram.jar:libs/*' main.Main

Remarque : La syntaxe dir/* ajoute tous les fichiers JAR du répertoire spécifié au classpath.

Conseils supplémentaires :

  • Pour l'approche définie par le manifeste, utilisez l'outil tâche pour générer dynamiquement le fichier manifeste avec le chemin de classe souhaité avant de créer le JAR.
  • Si l'option -jar est plus pratique, assurez-vous que toutes les dépendances sont incluses dans le manifeste du JAR.

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