Добавление jar в classpath при запуске из командной строки

хорошо, я знаю, что этот вопрос задавался много, много, много раз раньше, но я гуглил его и смотрел на примеры и смотрел на вопросы о SO за последний месяц, и я серьезно не могу заставить это работать. Я думаю, проблема в том, что я хочу иметь возможность запускать программу как из Eclipse, так и из командной строки. Я также использую OSX, и я думаю, что многие примеры, которые я читаю, предназначены для Windows/Linux.

Если у меня есть простая программа, скомпилированная в Eclipse, которую я хочу запустить из командная строка я делаю это:

java -cp bin MyProgram

у меня есть другая программа, которую я компилирую и запускаю в Eclipse, и это ссылается на MySQL JDBC connector (mysql-connector-java-5.1.19-bin.jar), который хранится в том же каталоге. Это прекрасно работает из Eclipse, но я не могу запустить его из командной строки.

Я пробовал все комбинации вещей...

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

и получить все виды ошибок класса не найдены...

Exception in thread "main" java.lang.NoClassDefFoundError: MyProgram
Caused by: java.lang.ClassNotFoundException: MyProgram
    at java.net.URLClassLoader.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)

5 ответов


ваша проблема-минимальный разделитель, который вы используете. Сепаратор ; для windows. В системах Unix вы должны использовать : вместо:

java-classpath " bin: mysql-connector-java-5.1.19-bin.jar" MyProgram


используйте': 'для разделения записей в системах 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 преобразует его автоматически.


посмотреть:

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

вы не установили свой основной класс в classpaht, попробуйте добавить ./ in-cp


Я настоятельно рекомендую вам попробовать-jar или-jar. Я не помню, что именно, но это должно тебя успокоить. Кроме того, если у вас есть инструменты разработки от apple, у них есть упаковщик банок.