Это почти наверняка связано с тем, как вы настроили код, а не сам код.Исключение исходит от Class.forName
, и использование diff
показывает, что указанные вами строки одинаковы (никаких хитрых гомоглифов или других опечаток).
Типичный подход - попробовать простейшую вещь, котораяпо-прежнему не удается. Минимальный, завершенный и проверяемый пример является локальным термином переполнения стека для этого.
Замена всего кода в этом примере должна показать проблему без всякой другой чепухи.Вы можете использовать точно такой же код со встроенной литеральной строкой с копией и вставкой между ними или ссылаться на класс напрямую.
Class<?> driverClass = com.mysql.cj.jdbc.Driver.class;
(Возможно, вам придется исправить путь к классу для вашегоСначала компилятор исходного кода Java.) Обычно это можно заменить непосредственным построением драйвера.
java.sql.Driver driver = new com.mysql.cj.jdbc.Driver();
Мы перевели ошибку времени выполнения в ошибку времени компиляции.Выиграть!Что ж, в этом случае это, вероятно, закончится ошибкой времени соединения.
В зависимости от того, что после этого переключения, исключение показывает, что во время выполнения возникает проблема с classpath.Это может быть что-то в pom.xml
- драйвер MySQL должен быть виден в пути к классам для , запускающего веб-приложение.
Вы можете развернуть библиотечные классы вместе с кодом вашего веб-приложения.В качестве альтернативы существуют другие стандартные места для размещения библиотек в веб-контейнерах (см. Вашу документацию), которые могут использоваться более широко и позволяют избежать накладных расходов при перезагрузке драйверов при повторном развертывании в работающем контейнере во время разработки.Драйверы JDBC - это просто библиотеки классов в jar-файлах (у некоторых есть нативные компоненты, но я полагаю, что в наши дни это в значительной степени ограничено хитрыми мостами с нативными интерфейсами).