Позорное java.sql.SQLException: не найдено подходящего драйвера

Я пытаюсь добавить JSP с поддержкой базы данных к существующему приложению Tomcat 5.5 (GeoServer 2.0.0, если это помогает).

Само приложение прекрасно говорит о Postgres, поэтому я знаю, что firebase database работает, пользователь может получить к ней доступ, все это хорошо. То, что я пытаюсь сделать, – это запрос базы данных в JSP, который я добавил. Я использовал пример конфигурации в примере с источником данных Tomcat в значительной степени из коробки. Необходимые taglib находятся в нужном месте – никаких ошибок не возникает, если у меня есть только tags taglib, поэтому они находят эти JAR. Драйвер postgres jdbc, postgresql-8.4.701.jdbc3.jar находится в $ CATALINA_HOME / common / lib.

Вот вершина JSP:

   select current_validstart as ValidTime from runoff_forecast_valid_time  

Соответствующий раздел из $ CATALINA_HOME / conf / server.xml внутри который в свою очередь находится в :

    

Эти строки являются последними в теге в webapps / gs2 / WEB-INF / web.xml:

   The database resource for the MMAS PostGIS database   jdbc/mmas   javax.sql.DataSource   Container   

Наконец, исключение:

  exception org.apache.jasper.JasperException: Unable to get connection, DataSource invalid: "java.sql.SQLException: No suitable driver" [...wads of ensuing goo elided] 

Позорное java.sql.SQLException: не найдено подходящего драйвера

Это исключение может иметь в основном две причины:

1. Драйвер JDBC не загружен

Вы должны убедиться, что драйвер JDBC помещен в собственную папку /lib сервера.

Или, когда вы на самом деле не используете источник данных пула соединений, управляемый сервером, но вручную DriverManager#getConnection() с помощью DriverManager#getConnection() в WAR, тогда вам нужно поместить драйвер JDBC в WAR /WEB-INF/lib и выполнить ..

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

.. в вашем коде перед первым DriverManager#getConnection() котором вы убедитесь, что вы не проглатываете / игнорируете любое исключение ClassNotFoundException которое может быть выбрано им, и продолжайте stream кода, как будто ничего исключительного не произошло. См. Также Где мне нужно разместить драйвер JDBC для пула соединений Tomcat?

2. Или URL JDBC находится в неправильном синтаксисе

Вы должны убедиться, что URL JDBC соответствует документации драйвера JDBC и имейте в виду, что он обычно чувствителен к регистру. Когда URL-адрес JDBC не возвращает true для Driver#acceptsURL() для любого из загруженных драйверов, вы также получите именно это исключение.

В случае PostgreSQL это описано здесь .

С JDBC firebase database представлена ​​URL-адресом (Uniform Resource Locator). В PostgreSQL ™ это принимает одну из следующих форм:

  • jdbc:postgresql:database
  • jdbc:postgresql://host/database
  • jdbc:postgresql://host:port/database

В случае MySQL это описано здесь .

Общий формат URL-адреса JDBC для подключения к серверу MySQL следующий: элементы в квадратных скобках ( [ ] ) являются необязательными:

jdbc:mysql://[host1][:port1][,[host2][:port2]]...[/[database]] » [?propertyName1=propertyValue1[&propertyName2=propertyValue2]...]

В случае Oracle это описано здесь .

Существует 2 синтаксиса URL, старый синтаксис, который будет работать только с SID, а новый – с именем службы Oracle.

Старый синтаксис jdbc:oracle:thin:@[HOST][:PORT]:SID

Новый синтаксис jdbc:oracle:thin:@//[HOST][:PORT]/SERVICE


Смотрите также:

  • Где я должен разместить драйвер JDBC для пула соединений Tomcat?
  • Как установить драйвер JDBC в веб-проект Eclipse без обращения к java.lang.ClassNotFoundexception
  • Как подключиться к базе данных JDBC / источнику данных в приложении на основе сервлета?
  • В чем разница между «Class.forName ()» и «Class.forName (). NewInstance ()»?
  • Подключение Java к базе данных MySQL
 url="jdbc:postgresql//localhost:5432/mmas" 

Этот URL-адрес выглядит неправильно, вам нужно следующее?

 url="jdbc:postgresql://localhost:5432/mmas" 

Я нашел подсказку подсказки полезной, чтобы устранить эту проблему в Tomcat –

обязательно загрузите драйвер, сначала выполнив Class.forName («org.postgresql.Driver»); в вашем коде.

Это из статьи https://www.postgresql.org/message-id/[email protected].

Код jdbc отлично работал как автономная программа, но в TOMCAT он дал ошибку «Не найден подходящий драйвер»,

Я столкнулся с подобной проблемой. Мой проект в контексте – это динамический веб-проект (Java 8 + Tomcat 8), а ошибка для исключения драйвера PostgreSQL: не найдено подходящего драйвера

Он был разрешен путем добавления Class.forName("org.postgresql.Driver") перед вызовом метода getConnection()

Вот мой пример кода:

 try { Connection conn = null; Class.forName("org.postgresql.Driver"); conn = DriverManager.getConnection("jdbc:postgresql://" + host + ":" + port + "/?preferQueryMode=" + sql_auth,sql_user , sql_password); } catch (Exception e) { System.out.println("Failed to create JDBC db connection " + e.toString() + e.getMessage()); } 

Я забыл добавить драйвер PostgreSQL JDBC в проект Mvnrepository .

Gradle :

 // http://mvnrepository.com/artifact/postgresql/postgresql compile group: 'postgresql', name: 'postgresql', version: '9.0-801.jdbc4' 

Maven :

  postgresql postgresql 9.0-801.jdbc4  

Вы также можете загрузить JAR и импортировать в свой проект вручную.

Возможно, стоит отметить, что это также может произойти, когда Windows блокирует загрузки, которые он считает небезопасными. Для этого можно щелкнуть правой кнопкой мыши файл jar (например, ojdbc7.jar) и установить флажок «Разблокировать» внизу.

Диалоговое окно свойств файла JAR Windows :
Диалоговое окно свойств файла JAR для Windows

Я использовал jruby, в моем случае я создал в config / initializers

postgres_driver.rb

 $CLASSPATH << '~/.rbenv/versions/jruby-1.7.17/lib/ruby/gems/shared/gems/jdbc-postgres-9.4.1200/lib/postgresql-9.4-1200.jdbc4.jar' 

или где бы ни находился ваш водитель, и все!

Помимо добавления соединителя JDBC MySQL убедитесь, что context.xml (если он не распакован в папке webapps Tomcat) с вашими определениями соединений с БД включены в каталог Tomcats conf.

У меня была эта точная проблема при разработке приложения Spring Boot в STS, но в конечном итоге развертывание упакованной войны в WebSphere (v.9). Основываясь на предыдущих ответах, моя ситуация была уникальной. ojdbc8.jar был в моей папке WEB-INF / lib с набором родительского последнего classа, но всегда говорит, что не удалось найти подходящего драйвера.

Моя последняя проблема заключалась в том, что я использовал неправильный class DataSource, потому что я просто следил за онлайн-учебниками / примерами. Нашел подсказку, спасибо Дэвиду Даю за комментарий к его собственному вопросу: Spring JDBC Не удалось загрузить class драйвера JDBC [oracle.jdbc.driver.OracleDriver]

Также позже был найден пример весеннего гуру с конкретным драйвером Oracle: https://springframework.guru/configuring-spring-boot-for-oracle/

Пример, который вызывает ошибку с использованием org.springframework.jdbc.datasource.DriverManagerDataSource на основе общих примеров.

 @Config @EnableTransactionManagement public class appDataConfig { \* Other Bean Defs *\ @Bean public DataSource dataSource() { // configure and return the necessary JDBC DataSource DriverManagerDataSource dataSource = new DriverManagerDataSource("jdbc:oracle:thin:@//HOST:PORT/SID", "user", "password"); dataSource.setSchema("MY_SCHEMA"); return dataSource; } } 

И исправленный exapmle с использованием oracle.jdbc.pool.OracleDataSource :

 @Config @EnableTransactionManagement public class appDataConfig { /* Other Bean Defs */ @Bean public DataSource dataSource() { // configure and return the necessary JDBC DataSource OracleDataSource datasource = null; try { datasource = new OracleDataSource(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } datasource.setURL("jdbc:oracle:thin:@//HOST:PORT/SID"); datasource.setUser("user"); datasource.setPassword("password"); return datasource; } } 
  • Как развернуть военный файл в Tomcat 7
  • org.apache.tomcat.util.bcel.classfile.ClassFormatException: недопустимый тег байта в постоянном пуле: 15 - Tomcat 7, JDK incompatibilty?
  • Можно ли отключить jsessionid в сервлете tomcat?
  • добавить параметры jvm в tomcat
  • Ошибка: kernel ​​сервлета не загружено ... Класс нарушения: javax / servlet / Servlet.class
  • Максимальный размер содержимого параметра POST?
  • Tomcat не запускается через Eclipse (таймаут)
  • java.lang.IllegalArgumentException: Неверный в отображении сервлета
  • Добавление сторонних баннеров в WEB-INF / lib автоматически с помощью Eclipse / Tomcat
  • Обмен данными сеанса между контекстами в Tomcat
  • Несколько портов (8005, 8080, 8009), требуемых Tomcat Server на локальном хосте, уже используются
  • Давайте будем гением компьютера.