Java DriverManager не загружает драйвер Mysql

Java DriverManager не загружает драйвер Mysql

DriverManager
    static {
        loadInitialDrivers();
        println("JDBC DriverManager initialized");
    }

Драйвер Mysql jdbc находится в библиотеке Tomcat.

  tomcat/lib/mysql-jdbc.jar

Из отладчика, перед вызовом DriverManager.getDriver (URL), точка останова устанавливается в методе loadInitialDrivers (), но выполнение на этом не останавливается. Это статический метод, когда класс загружается, а статический метод вызывается?

Список загруженных драйверов (registeredDrivers) пуст.

Обновлено

Добавьте ojdbc6.jar в tomcat / lib, а затем перезапустите tomcat. DriverManager не сделал загрузить драйвер тоже. В чем может быть проблема? Кажется, что tomcat игнорирует все jar-файлы JDBC в каталоге tomcat / lib.

Также пробовал: скопировать драйверы jdbc в webapps / myapp / WEB-INF / lib, не помогло.

Что такое mysql-jdbc.jar? Имя текущего драйвера MySQL JDBC - mysql-connector-java-8.0.11.jar. А ojdbc6.jar девять лет.

user207421 08.06.2018 05:48

Это jar-соединитель mysql jdbc. Раньше это работало.

Sunnyday 08.06.2018 17:21

используя gradle для загрузки jdbc jar. mysql --- группа: 'mysql', имя: 'mysql-connector-java', версия: '6.0.6' oracle --- группа: 'com.oracle', имя: 'ojdbc6', версия: '11 .2. 0,3 '

Sunnyday 08.06.2018 17:25

Если я использую только java без tomcat, DriverManager сможет успешно загрузить драйверы. Я предполагаю, что это может быть путь к классам (проблема с загрузчиком классов).

Sunnyday 08.06.2018 17:28

Есть ли способ распечатать путь к классам для веб-приложения, чтобы узнать, находятся ли jdbc jar-файлы в пути к классам?

Sunnyday 08.06.2018 18:28
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
5
494
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Запуск SQL из простого Java-приложения сильно отличается от запуска SQL с JEE-сервера, такого как Tomcat (ну ... по крайней мере, половина JEE-сервера).

Не используйте инициализаторы static. Вместо этого JEE (Java Enterprise Edition) делает это иначе по множеству очень веских причин:

  • В Tomcat вам не нужно «загружать» драйвер. Просто поместите его в TOMCAT_HOME/lib и перезапустите Tomcat. Вот и все. Драйвер уже загружен. Смотрите журнал Tomcat, пока он запускается, и вы его увидите. Tomcat (как и любой сервер JEE) позаботится о его загрузке.

  • Затем вам нужно создать источник данных JDBC. Есть много примеров того, как это сделать. Для этого нужно изменить файл conf / server.xml и перезапустить Tomcat. Убедитесь, что вы дали источнику данных имя, которое вы помните; вы будете использовать его на следующем шаге. Снова посмотрите на файл журнала Tomcat при запуске, и вы увидите, что регистрируется / создается новый источник данных.

  • Затем в коде JEE вы извлекаете источник данных из каталога JNDI, используя имя, которое вы настроили на предыдущем шаге, и используете его для создания Connection. Опять же, есть множество примеров того, как это сделать.

  • Наконец, с Connection вы можете запускать все операторы SQL, какие захотите. Это то, что вы уже хорошо знаете. Делайте это так же, как обычно.

DriverManager нельзя использовать в среде Tomcat? Это стандартная java-библиотека. Как это отключено? Благодарю.

Sunnyday 09.06.2018 01:23

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

The Impaler 09.06.2018 03:50

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