web-dev-qa-db-fra.com

Ajout de jar à classpath lors de l'exécution à partir de la ligne de commande

Ok, je sais que cette question a déjà été posée à de nombreuses reprises auparavant, mais je l'ai googlé et regardé des exemples, ainsi que des questions sur SO au cours du dernier mois, et je ne peux sérieusement pas que cela fonctionne. Je pense que le problème est que je veux pouvoir exécuter le programme à partir d'Eclipse et de la ligne de commande. J'utilise également OSX et je pense que bon nombre des exemples que je lis concernent Windows/Linux.

Si j'ai un programme simple compilé dans Eclipse que je veux exécuter depuis la ligne de commande, je fais ceci:

Java -cp bin MyProgram

J'ai un autre programme que je compile et exécute dans Eclipse, et cela fait référence au connecteur JDBC MySQL (mysql-connector-Java-5.1.19-bin.jar) qui est stocké dans le même répertoire. Cela fonctionne très bien avec Eclipse, mais je ne peux pas l'exécuter à partir de la ligne de commande.

J'ai essayé toutes les combinaisons de choses ...

Java -classpath "bin;mysql-connector-Java-5.1.19-bin.jar" MyProgram
Java -cp bin\;mysql-connector-Java-5.1.19-bin.jar MyProgram

et obtenir toutes sortes d'erreurs de classe non trouvées ...

Exception in thread "main" Java.lang.NoClassDefFoundError: MyProgram
Caused by: Java.lang.ClassNotFoundException: MyProgram
    at Java.net.URLClassLoader$1.run(URLClassLoader.Java:202)
    at Java.security.AccessController.doPrivileged(Native Method)
    at Java.net.URLClassLoader.findClass(URLClassLoader.Java:190)
    at Java.lang.ClassLoader.loadClass(ClassLoader.Java:306)
    at Sun.misc.Launcher$AppClassLoader.loadClass(Launcher.Java:301)
    at Java.lang.ClassLoader.loadClass(ClassLoader.Java:247)
11
Matt

Votre problème est le séparateur min que vous utilisez. Le séparateur ; est pour Windows. Sur les systèmes Unix, vous devez utiliser : à la place:

Java -classpath "bin: mysql-connector-Java-5.1.19-bin.jar" MonProgramme

13
AlexR

Utilisez un ':' pour séparer vos entrées sur les systèmes Unix:

Java -classpath "bin:mysql-connector-Java-5.1.19-bin.jar" MyProgram
Java -cp bin:mysql-connector-Java-5.1.19-bin.jar MyProgram

Eclipse le convertit automatiquement.

5
mprivat

Voir: 

String pathSeparator = System.getProperty("path.separator");
1
Andrew Thompson

vous n'avez pas défini votre classe principale dans classpaht, essayez d'ajouter ./ dans -cp

0
user1335794