То же приложение сервлет проекта не работает, но метод "hello world", в проекте одно и тоже да. Вот картинка проекта.
Версии:
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
Итак, это проблема, или я что-то упустил. Спасибо
РЕШЕНО: Нам нужно добавить библиотеку в Artifact.
@MarkRotteveel да, я слишком много занимаюсь программированием для настольных компьютеров.




Убедитесь, что все необходимые jar-файлы также включены в Конфигурация артефакта, который вы развертываете на сервере приложений.
Спасибо, но из приложения "hello world" из того же проекта, которое работает нормально. Но в приложении Servlet нет.
Да, зависимости модулей могут не включаться в артефакт автоматически, проверьте, какие библиотеки развернуты с сервлетом.
Этого мало? (добавлено фото Артефактов)
Изображение артефактов ясно показывает, что вы не добавляли библиотеки в каталог WEB-INF\lib артефакта, поскольку они показаны в Доступных элементах. Доступен означает, что это библиотеки, которые еще не добавлены в артефакт.
Спасибо, теперь работает, но я подумал, что достаточно после добавления в POM.
@AshotKarakhanyan Это зависит от того, используете ли вы Maven для генерации WAR или нет. Похоже, вы используете IntelliJ для генерации WAR, а не Maven.
@MarkRottevee Я делаю следующий шаг к веб-проекту: l File-> New-> Project-> выберите Maven-> щелкните правой кнопкой мыши-> Add Framework Support-> Затем выберите «Web App ...» -> затем добавьте POM. xml добавить зависимости, которые используют, и после этого я «вручную» добавлю эти jar-файлы в Артефакты.
Да, но на снимке экрана показано, что вы не используете Maven для генерации WAR, вместо этого вы используете внутреннюю функцию IntelliJ.
@MarkRotteveel не все так просто. Когда веб-проект Maven импортируется в IntelliJ IDEA, он автоматически генерирует артефакты со всеми зависимостями, но если артефакт был создан вручную или зависимости были обновлены позже, новые зависимости не будут включены в уже существующий артефакт.
@CrazyCoder Вы также можете позволить IntelliJ использовать Maven для генерации WAR, тогда вам не нужно определять или обновлять определение WAR самостоятельно.
@MarkRotteveel, конечно, можете, но горячее развертывание / обновление не будет работать при отладке приложения, созданного Maven (jetbrains.com/help/idea/…).
@CrazyCoder Спасибо, узнал что-то новое, я обычно не использую вещи горячего развертывания, потому что почему-то они никогда не работают для меня.
@JoopEggen В веб-приложениях, когда драйвер используется во время войны,
Class.forNameвсе еще очень необходим.DriverManagerавтоматически загружает драйверы только из исходного (системного) пути к классам, а не из контекстных путей. Однако этого обычно избегают, используя источники данных вместо (напрямую) использованияDriverManager. Либо источник данных имеет прямой доступ к драйверу, либо его конфигурация все равно требует указать имя класса драйвера.