57 votes

Java : problème d'exécution d'un fichier jar en ligne de commande

J'essaie d'appeler une classe (méthode main) depuis la ligne de commande (Windows) avec Java.
La classe importe d'autres classes (d'autres bocaux).

J'obtiens toujours l'exception "class not found" d'une classe que mon programme principal importe.

Voici ce que j'ai essayé :

  • Ajouter une var. env. CLASSPATH avec le chemin où réside la librairie référencée (ne fonctionne pas)

  • J'ai essayé avec tous ces différents paramètres en appelant " java -jar myjar.jar "à partir de la ligne de commande : " -classpath lib/ ", " -classpath ./lib/ ", " -classpath lib ", " -cp lib/* ", " -cp lib/\* ", " -classpath lib/referenced-class.jar ", " -classpath ./lib/referenced-class.jar " (lib est l'endroit où se trouve le jar référencé)

  • J'ai essayé d'empaqueter toutes les jar référencées dans ma jar où réside ma classe principale...

  • Et avec tout ça, j'ai aussi essayé de spécifier les classes dans le fichier Manifest avec : Class-path referenced-jar.jar et j'ai aussi essayé Class-path lib/referenced-jar.jar

Rien n'a fonctionné. Sérieusement, pourquoi c'est si compliqué ? :(

88voto

Adam Paynter Points 22056

Vous pourriez l'exécuter sans le -jar si vous connaissez le nom de la classe principale que vous souhaitez exécuter :

java -classpath .;myjar.jar;lib/referenced-class.jar my.package.MainClass

Si par hasard vous utilisez linux, vous devriez utiliser " :" au lieu de " ;" dans le classpath.

48voto

Michael Myers Points 82361

Si vous exécutez un fichier jar avec java -jar le -classpath argument est ignoré . Vous devez définir le classpath dans le fichier manifest de votre jar, comme suit :

Class-Path: jar1-name jar2-name directory-name/jar3-name

Voir les tutoriels Java : Ajout de classes au chemin de classe du fichier JAR .

Editar: Je vois que vous avez déjà essayé de définir le chemin de la classe dans le manifeste, mais êtes-vous sûr d'avoir utilisé la bonne syntaxe ? Si vous sautez le ' : après " Class-Path " comme vous l'avez montré, cela ne fonctionnerait pas.

12voto

artemb Points 3303

Essayez

java -cp "your_jar.jar:lib/referenced_jar.jar" com.your.main.Main

Si vous êtes sous Windows, vous devez utiliser " ;" au lieu de " :".

2voto

cupakob Points 2085

Vous pouvez essayer d'exporter comme "Runnable jar" dans eclipse. J'ai aussi des problèmes, quand j'exporte en tant que "jar", mais je n'ai jamais de problèmes quand j'exporte en tant que "Runnable jar".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X