Maison  >  Article  >  Java  >  Comment exécuter un fichier JAR avec des dépendances supplémentaires : -jar vs -cp ?

Comment exécuter un fichier JAR avec des dépendances supplémentaires : -jar vs -cp ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-08 03:04:02936parcourir

How to Execute a JAR File with Additional Dependencies: -jar vs. -cp?

Appelez "java -jar MyFile.jar" avec l'option de chemin de classe supplémentaire

En Java, il existe deux façons d'exécuter un fichier JAR : en utilisant l'option -jar ou en spécifiant le chemin de classe avec -cp. Cependant, tenter de combiner les deux options entraîne une erreur.

Lors de l'utilisation de -jar, la machine virtuelle Java (JVM) suppose que le fichier JAR contient toutes les dépendances nécessaires. Par conséquent, il n'est pas recommandé de spécifier un chemin de classe supplémentaire avec -cp.

Au lieu de cela, il existe deux approches alternatives :

Approche 1 : ajouter des JAR au manifeste principal

  1. Copiez les fichiers JAR requis dans un sous-dossier, tel que "libs".
  2. Utilisez le chemin tâche dans Ant avant de construire le JAR :
<code class="xml"><manifestclasspath property="myprogram.manifest.classpath" jarfile="MyProgram.jar">
  <classpath>
    <fileset dir="libs" includes="*.jar" />
  </classpath>
</manifestclasspath></code>
  1. Créez le JAR avec le manifeste mis à jour :
<code class="xml"><jar destfile="MyProgram.jar" basedir="classes">
  <manifest>
    <attribute name="Main-Class" value="main.Main" />
    <attribute name="Class-Path" value="${myprogram.manifest.classpath}" />
  </manifest>
</jar></code>

En spécifiant le chemin de classe dans le manifeste , java -jar MyProgram.jar inclura toutes les dépendances.

Approche 2 : Spécifiez le chemin de classe avec -cp

  1. Incluez tous les fichiers JAR requis dans le chemin de classe :
java -cp 'MyProgram.jar:libs/*' main.Main

L'utilisation de la syntaxe * se développe pour inclure tous les fichiers JAR dans le répertoire "libs".

N'oubliez pas qu'il est crucial de choisir l'approche -jar ou -cp. La combinaison des deux peut entraîner des conflits et des erreurs de chemin de classe.

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