CLASSPATH проблема при доступе к Mysql в Linux - PullRequest
0 голосов
/ 11 ноября 2010

Я установил Mysql на мою Linux-систему и написал пример программы для доступа к одной из ее таблиц.Я использую 'mysql-connector-java-5.1.10.jar'

Код работает нормально, если я помещаю банку в 'jre / lib / ext'.Однако другие способы распознать эту банку не работают.Я попытался установить $ CLASSPATH и попытался использовать '.'текущий каталог.

Сбой из-за следующей ошибки:

java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306
        at java.sql.DriverManager.getConnection(DriverManager.java:602)
        at java.sql.DriverManager.getConnection(DriverManager.java:185)

1 Ответ

0 голосов
/ 11 ноября 2010

Обычно я не использую глобальную переменную $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) находятся в пути к классам и в части приложения.Если текущий каталог был добавлен в путь к классам автоматически, тогда все файлы в текущем местоположении (и в местах всех подпапок) также будут в пути к классам, независимо от того, предназначены они или нет.В результате это приложение может работать, если оно запускается из домашнего каталога пользователей, но, возможно, нет, если оно запускается из корневого каталога (/).

...