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

Я устанавливаю простое соединение 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?

6 ответов

Решение

Забудь 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, то вы должны указать classpath в MANIFEST.MF файл JAR в вопросе. Но если это также не так, и это свободный .class файл, то вам нужно указать путь к классу в -cp или же -classpath аргумент java команда. Чтобы уберечь себя от ввода его снова и снова при выполнении, просто создайте .sh файл с командой.

Стараться сделать:

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

прежде чем получить ваше соединение

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

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

Этот урок также может вам помочь.

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

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.40</version>
</dependency>

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

Мне удалось подключиться к 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

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

Вы, кажется, работаете над коробкой 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>

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

В Ubuntu 20.04: установите постоянный путь к классу драйвера jdbc

Установите драйвер Mariadb

      sudo apt install libmariadb-java

Поместите путь к классу .bashrc файл

      export CLASSPATH=/usr/share/java/mariadb-java-client-2.5.3.jar:$CLASSPATH

Сохраните файл

Другие вопросы по тегам