JDBC CLASSPATH не работает - PullRequest
       8

JDBC CLASSPATH не работает

3 голосов
/ 18 января 2011

Я устанавливаю простое соединение JDBC с моей рабочей базой данных MySQL на моем сервере.Я использую Connector-J, предоставленный MySQL.В соответствии с их документацией, я предполагаю создать переменную CLASSPATH, указывающую на каталог, в котором находится mysql-connector-java-5.0.8-bin.jar.Я использовал export set CLASSPATH=/path/mysql-connector-java-5.0.8-bin.jar:$CLASSPATH.Когда я набираю echo $CLASSPATH, чтобы увидеть, существует ли он, все выглядит нормально.Но потом, когда я открываю новый терминал и набираю echo $CLASSPATH, его там больше нет.Я думаю, что это основная причина, по которой мой Java-сервер не подключается к JDBC, потому что он не сохраняет установленную мною переменную CLASSPATH.

Кто-нибудь получил предложения или исправления о том, как настроить JDBC впервое место?

Ответы [ 5 ]

2 голосов
/ 18 января 2011

Забудьте переменную окружения CLASSPATH. Это большая шутка. Он игнорируется почти всем остальным, кроме низкоуровневой команды java com.example.Foo. Это игнорируется при добавлении аргумента -jar. Он игнорируется при добавлении аргумента -cp или -classpath. Это игнорируется IDE и веб-серверами / серверами приложений. Эта переменная окружения была задумана как удобство для начинающих. Но кроме этого, это бесполезно.

Это сводится к тому, что файл JAR должен быть помещен в любой из существующих путей / путей по умолчанию пути к классам времени выполнения рассматриваемого приложения Java, или что по крайней мере путь к файлу JAR должен быть добавлен в путь к классу выполнения рассматриваемого Java-приложения.

Поскольку вы говорите о сервере и учитываете тот факт, что переменная окружения CLASSPATH не работает, я предполагаю, что на самом деле это веб-сервер / сервер приложений, такой как Apache Tomcat. Если это действительно так, вам нужно либо удалить JAR-файл в папку Tomcat/lib (если вы используете подход с управлением контейнером DataSource для быстрого пула соединений), либо в папку WEB-INF/lib веб-приложения (если вы используете Class#forName() подход бедного человека для загрузки водителя).

Если это не так и это на самом деле Java-приложение, которое должно быть выполнено в виде JAR, то вам нужно указать путь к классу в MANIFEST.MF файле рассматриваемого JAR. Но если это не так и это свободный файл .class, то вам нужно указать classpath в аргументе -cp или -classpath команды java. Чтобы уберечь себя от ввода его снова и снова при выполнении, просто создайте файл .sh с командой.

1 голос
/ 18 января 2011

Попробуйте выполнить:

Class.forName("com.mysql.jdbc.Driver"); 

перед установкой соединения

Возможно, вы также захотите получить более свежую версию драйвера mysql jdbc.5.0.8 довольно старый.

Взгляните на Основы JDBC , он даст вам несколько советов.

Этот учебник может помочь вам какхорошо.

0 голосов
/ 04 октября 2016

Для MAVENS проекта решение. Вы можете напрямую изменить файл pom.xml . Добавьте зависимость mysql-connector в файл проекта pom.xml:

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.40</version>
</dependency>
0 голосов
/ 14 апреля 2012

Я знаю, что это старая ветка, но она может кому-то помочь.

Мне удалось подключиться к SQLite3 в Windows 7 с соответствующим CLASSPATH

Я использую драйвер JDBC sqlite-jdbc-3.7.2.

Сначала я попытался скопировать драйвер в каталог c: \ Program Files \ java \ jre7 \ lib, а затем установить переменную CLASSPATH, но не удалось распознать строку:

Class.forName("org.sqlite.JDBC");

Я думаю, что это связано с ошибкой Windows, когда в имени папки есть пробелы, такие как "Program Files".

Итак, я скопировал файл JAR в C: \ jbmorla и установил для CLASSPATH значение:

.;c:\jbmorla\sqlite-jdbc-3.7.2.jar

Надеюсь, это поможет

0 голосов
/ 18 января 2011

Вы, кажется, работаете над Linux-коробкой. Убедитесь, что ваш терминал запускает оболочку login. Например, приложение gnome-terminal (вероятно, то, что вы используете, если вы используете Ubuntu или Fedora Box для разработки) имеет флажок в настройках профиля> Заголовок и меню команд, которое называется «Выполнить команду как оболочку входа». Проверьте это и убедитесь, что вы также поместили этот код в файл ~ / .bash_profile в конце.

export CLASSPATH=/path/mysql-connector-java-5.0.8-bin.jar:$CLASSPATH

Но я бы не стал делать это и делать простой скрипт запуска для вашего приложения. Нечто похожее на это:

#!/bin/bash

Set CLASSPATH=CLASSPATH=/path/mysql-connector-java-5.0.8-bin.jar:$CLASSPATH

java -cp "$CLASSPATH" <your.main.application.Class>

сделайте исполняемый файл и используйте его для запуска вашего приложения.

...