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)
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
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.
Voir:
String pathSeparator = System.getProperty("path.separator");
vous n'avez pas défini votre classe principale dans classpaht, essayez d'ajouter ./
dans -cp