Обычно я не использую глобальную переменную $CLASSPATH
, самый простой способ запустить ее -
java -cp .;/path/to/mysql-connector-java-5.1.10.jar[;<other libs>] pkg.name.MyApplication
Sidenote
Если у вас естьприложение экспортирует в jar с атрибутом Main-Class
(«исполняемый файл jar») и запускает его с java -jar myjar.jar
, затем необходимо добавить все необходимые библиотеки в манифест jar, $CLASSPATH
и -cp
игнорируются в этом случае.И именно поэтому я обычно не использую опцию -jar
...
Изменить
Чтобы ответить на ваш дополнительный вопрос: Если текущий каталог был добавлен вclasspath по умолчанию, тогда местоположение, из которого было запущено приложение, может повлиять на само приложение.
Представьте себе приложение внутри jar и команду запуска
java -cp application.jar com.example.Main
Теперь у нас есть определенная среда: только содержимое application.jar (и классы jre) находятся в пути к классам и в части приложения.Если текущий каталог был добавлен в путь к классам автоматически, тогда все файлы в текущем местоположении (и в местах всех подпапок) также будут в пути к классам, независимо от того, предназначены они или нет.В результате это приложение может работать, если оно запускается из домашнего каталога пользователей, но, возможно, нет, если оно запускается из корневого каталога (/
).