Портативно найти класс Java - PullRequest
       26

Портативно найти класс Java

2 голосов
/ 02 декабря 2011

Я новичок в Java, но пока неплохо разбираюсь. Моему приложению теперь требуется соединение с MySQL, поэтому, учитывая множество учебников, я делаю что-то вроде этого:

Class.forName ("com.mysql.jdbc.Driver").newInstance();
Connection con = DriverManager.getConnection (url, userName, password);

Все в порядке, за исключением того, что мне нужно иметь местоположение драйвера JDBC MySQL в моем CLASSPATH, если Java когда-либо его найдет. Моя машина для разработки с Gentoo находится в /usr/share/jdbc-mysql/lib/jdbc-mysql.jar, но мой сервер Debian, который будет запускать приложение, содержит его в /usr/share/java/mysql.jar. Так что расположение может отличаться в разных дистрибутивах Linux.

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

Какой правильный способ для моего приложения найти драйвер, независимо от того, где его хранит дистрибутив?

В других языках программирования я привык, что это происходит автоматически. В perl я пишу «use Package :: Name», и он просто находит его, независимо от того, где его хранит дистрибутив. В C динамические библиотеки автоматически находятся в /usr/lib/.

Любая помощь приветствуется, спасибо!

Ответы [ 5 ]

4 голосов
/ 02 декабря 2011

Одна из возможностей - не полагаться на дистрибутив ОС, чтобы обеспечить зависимость и распространять ее самостоятельно.Большинство приложений работают таким образом.

С другой стороны, пользователю может быть предложено поместить банку в место, известное вашему приложению.

0 голосов
/ 02 декабря 2011
Class.forName ("com.mysql.jdbc.Driver")

Вам не нужно было этого делать для нескольких выпусков JDBC.

0 голосов
/ 02 декабря 2011

Вы можете сохранить драйвер sql в папке lib вашего приложения.

0 голосов
/ 02 декабря 2011

Это будет зависеть от того, как вы собираетесь его построить. Если для вашего источника вы используете ванильную java-упаковку, скорее всего, вам придется использовать относительные, а не буквальные пути, чтобы сделать эту работу.

0 голосов
/ 02 декабря 2011

Если у вас есть скрипт установки, вы можете найти там jar-файл и установить classpath.

Однако обычно мы используем папку lib с нашей java-программой и помещаем необходимыебанки там.Таким образом, мы также можем контролировать, какие версии используются.

...