web-dev-qa-db-fra.com

Java: comment importer un fichier jar à partir de la ligne de commande

J'essaie d'appeler une classe (méthode principale) à partir de la ligne de commande (Windows) avec Java.
La classe importe d’autres classes (autres pots).

Je reçois toujours une "exception de classe introuvable" d'une classe importée par mon programme principal.

Voici ce que j'ai essayé:

  • Ajouter un env. CLASSPATH var avec le chemin où réside la bibliothèque référencée (ne fonctionne pas)

  • J'ai essayé avec tous ces paramètres différents en appelant "Java -jar myjar.jar "depuis 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ù réside le jar référencé)

  • J'ai essayé d'emballer tous les pots référencés à l'intérieur de mon pot où réside ma classe principale ...

  • Et avec tout cela, j'ai aussi essayé de spécifier les classes à l'intérieur du fichier Manifest avec: Class-path referenced-jar.jar et j'ai aussi essayé Class-path lib/referenced-jar.jar

73
mrmuggles

Vous pouvez l'exécuter sans le -jar argument de ligne de commande 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.

117
Adam Paynter

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

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

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

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

59
Michael Myers

essayer

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

Si vous êtes sur Windows, vous devriez utiliser ; au lieu de :

13
artemb

vous pouvez essayer d’exporter sous le nom "Runnable jar" dans Eclipse. J'ai aussi des problèmes lorsque j'exporte en tant que "jar", mais je n'ai jamais de problèmes lorsque j'exporte en tant que "jar runnable".

3
cupakob