В приложении у меня есть доступ к драйверу JDBC (исключение java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver)

0

Такое же приложение сервлета проекта не работает, но метод "hello world" в том же проекте да. Вот картина проекта.

Изображение 174551

Версии:

Intellij IDEA - 2018.2

Версия драйвера mySQL: 8.0.11, драйвер com.mysql.cj.jdbc.Driver

сервлет 9.0.81

В коде:

Class.forName(dbDriver).newInstance();
dbConnection = DriverManager.getConnection(connectionUrl, userName, password);

Исключение:

java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver...

КСТАТИ:

То же исключение, которое я получаю и без зависимости mysql в PON.xml

Итак, это проблема, или я чего-то не хватает. Спасибо

UPDATE Изображение 174551

SOLVED: нам нужно добавить библиотеку в Artifact.

  • 1
    @JoopEggen В веб-приложениях, когда драйвер используется в войне, Class.forName все еще очень необходим. DriverManager автоматически загружает драйверы из исходного (системного) пути к классам, а не из контекстных путей к классам. Однако этого обычно избегают, используя источники данных вместо (непосредственно) с помощью DriverManager . Либо источник данных имеет прямой доступ к драйверу, либо его конфигурация заставляет вас в любом случае указывать имя класса драйвера.
  • 0
    @MarkRotteveel да, я слишком много занимаюсь настольным программированием.
Теги:
servlets
intellij-idea
jdbc

1 ответ

1
Лучший ответ

Убедитесь, что все необходимые банки также включены в конфигурацию Artifact, которую вы развертываете на сервере приложений.

  • 0
    Спасибо, но из приложения "Привет мир" из того же проекта, который работает. Нормально. Но в приложении Servlet нет.
  • 0
    Да, зависимости модуля могут не включаться в артефакт автоматически, проверьте, какие библиотеки развернуты с сервлетом.
Показать ещё 10 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню