Как исправить: «Не найдено подходящего драйвера для ошибки jdbc: mysql: // localhost / dbname» при использовании пулов?

Я пытаюсь создать соединение с моей базой данных, когда я ставил тест своего кода с использованием основного метода, он работает без проблем. Однако, пытаясь получить к нему доступ через Tomcat 7, он не работает с ошибкой:

No suitable driver found for jdbc:mysql://localhost/dbname. 

Я использую объединение. Я включил библиотеки mysql (5.1.15), dbcp (1.4) и пула (1.4.5) в WEB-INF / lib и в .classpath. Я использую Eclipse IDE. Мой код для драйвера базы данных:

 import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import org.apache.tomcat.dbcp.dbcp.ConnectionFactory; import org.apache.tomcat.dbcp.dbcp.DriverManagerConnectionFactory; import org.apache.tomcat.dbcp.dbcp.PoolableConnectionFactory; import org.apache.tomcat.dbcp.dbcp.PoolingDriver; import org.apache.tomcat.dbcp.pool.impl.GenericObjectPool; public class DatabaseConnector { public static String DB_URI = "jdbc:mysql://localhost/dbname"; public static String DB_USER = "test"; public static String DB_PASS = "password"; // Singleton instance protected static DatabaseConnector _instance; protected String _uri; protected String _username; protected String _password; /** * Singleton, so no public constructor */ protected DatabaseConnector(String uri, String username, String password) { _uri = uri; _username = username; _password = password; GenericObjectPool connectionPool = new GenericObjectPool(null); ConnectionFactory connectionFactory = new DriverManagerConnectionFactory( _uri, _username, _password); PoolableConnectionFactory poolableConnectionFactory = new PoolableConnectionFactory(connectionFactory, connectionPool, null, null, false, true); PoolingDriver driver = new PoolingDriver(); driver.registerPool("test", connectionPool); } /** * Returns the singleton instance */ public static DatabaseConnector getInstance() { if (_instance == null) { _instance = new DatabaseConnector(DB_URI, DB_USER, DB_PASS); } return _instance; } /** * Returns a connection to the database */ public Connection getConnection() { Connection con = null; try { con = DriverManager.getConnection("jdbc:apache:commons:dbcp:test"); } catch (SQLException e) { throw new RuntimeException(e); } return con; } } 

Начало моей трассировки стека:

 Apr 5, 2011 9:49:14 PM org.apache.catalina.core.StandardWrapperValve invoke SEVERE: Servlet.service() for servlet [Login] in context with path [/Project] threw exception java.lang.RuntimeException: java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost/dbname 

Что вызывает эту ошибку?

Попробуйте поместить банку драйвера в папку сервера lib. ($ CATALINA_HOME / Библиотека)

Я считаю, что пул соединений должен быть настроен еще до того, как приложение будет создано. (По крайней мере, так оно работает в Jboss)

Причина, по которой вы получили эту ошибку:

 java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost/dbname 

Это потому, что вы забыли зарегистрировать свой драйвер mysql jdbc с помощью приложения java.

Вот что вы написали:

 Connection con = null; try { con = DriverManager.getConnection("jdbc:apache:commons:dbcp:test"); } catch (SQLException e) { throw new RuntimeException(e); } 

Должно быть:

 Connection con = null; try { //registering the jdbc driver here, your string to use //here depends on what driver you are using. Class.forName("something.jdbc.driver.YourFubarDriver"); con = DriverManager.getConnection("jdbc:apache:commons:dbcp:test"); } catch (SQLException e) { throw new RuntimeException(e); } 

Вам нужно будет прочитать руководство по вашему конкретному драйверу mysql jdbc, чтобы найти точную строку для размещения внутри параметра Class.forName («…»).

Класс.forName не требуется с JDBC v.4

Начиная с Java 6, Class.forName("something.jdbc.driver.YourFubarDriver") больше не требуется, если вы используете последний драйвер (JDBC v.4). Подробнее читайте здесь: http://onjava.com/pub/a/onjava/2006/08/02/jjdbc-4-enhancements-in-java-se-6.html

У меня была та же проблема с Tomcat7 с mysql-connector-java-5.1.26, которую я на всякий случай поставил как на мои $ CATALINA_HOME / lib, так и на WEB-INF / lib. Но он не найдет его, пока я не воспользуюсь ни одним из этих двух утверждений, прежде чем получить соединение:

DriverManager.registerDriver(new com.mysql.jdbc.Driver ());

ИЛИ

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

Затем я продолжил удаление mysql-connector-java-5.1.26 из $ CATALINA_HOME / lib, и соединение все еще работает.

При запуске tomcat из eclipse он не будет выбирать набор lib в CATALINA_HOME/lib , есть два способа его исправить. Дважды щелкните по серверу Tomcat на экране серверов eclipse, он откроет конфигурацию плагина tomcat, а затем либо:

  1. Перейдите на вкладку «Открыть Launch Config»> вкладка Classpath, установив расположение mysql connector / j jar. или
  2. Server Location> выберите опцию, в которой говорится: «Используйте установку Tomcat (возьмите под контроль установку Tomcat)»

У меня была библиотека mysql jdbc как в $ CATALINA_HOME / lib, так и в WEB-INF / lib, но я получил эту ошибку. Мне нужен Class.forName (“com.mysql.jdbc.Driver”); чтобы он работал.

У меня была та же проблема, все, что вам нужно сделать, это определить переменную среды classpath для tomcat, вы можете сделать это, добавив файл, в моем случае C:\apache-tomcat-7.0.30\bin\setenv.bat , содержащий:

 set "CLASSPATH=%CLASSPATH%;%CATALINA_HOME%\lib\mysql-connector-java-5.1.14-bin.jar" 

затем код, в моем случае:

 Class.forName("com.mysql.jdbc.Driver").newInstance(); conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/database_name", "root", ""); 

работает отлично.

Я запускаю Tomcat 7 в Eclipse с Java 7 и используя драйвер jdbc для MSSQL sqljdbc4.jar.

При запуске кода за пределами tomcat, из автономного java-приложения это работало просто отлично:

  connection = DriverManager.getConnection(conString, user, pw); 

Тем не менее, когда я попытался запустить тот же код внутри Tomcat 7, я обнаружил, что я мог бы заставить его работать, сначала зарегистрировав драйвер, изменив приведенное выше:

  DriverManager.registerDriver(new com.microsoft.sqlserver.jdbc.SQLServerDriver()); connection = DriverManager.getConnection(conString, user, pw); 

Использование:

 try { Class.forName("com.mysql.jdbc.Driver").newInstance(); System.out.println("Registro exitoso"); } catch (Exception e) { System.out.println(e.toString()); } DriverManager.getConnection(.. 

Bro, вы также можете написать код, как показано ниже:

 import java.sql.*; import java.io.*; public class InsertDatabase { public static void main(String[] args) { // TODO Auto-generated method stub try { Class.forName("com.mysql.jdbc.Driver"); Connection con=DriverManager.getConnection( "jdbc:mysql://localhost:3306/Maulik","root","root"); Statement stmt=con.createStatement(); ResultSet rs=stmt.executeQuery("select * from Employee"); while(rs.next()) System.out.println(rs.getInt(1)+" "+rs.getString(2)+" "+rs.getString(3)); con.close(); } catch(Exception e) { System.out.println(e); } } } в import java.sql.*; import java.io.*; public class InsertDatabase { public static void main(String[] args) { // TODO Auto-generated method stub try { Class.forName("com.mysql.jdbc.Driver"); Connection con=DriverManager.getConnection( "jdbc:mysql://localhost:3306/Maulik","root","root"); Statement stmt=con.createStatement(); ResultSet rs=stmt.executeQuery("select * from Employee"); while(rs.next()) System.out.println(rs.getInt(1)+" "+rs.getString(2)+" "+rs.getString(3)); con.close(); } catch(Exception e) { System.out.println(e); } } } 

если вы используете netbeans, вы должны добавить драйвер Mysql JDBC в список библиотек проекта, в свойствах вашего проекта

У меня также была та же проблема некоторое время назад, но я решил эту проблему.

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

Попробуйте узнать последнюю версию mysql-connector-jar и добавить ее в свой путь к classам. Это может решить вашу проблему. Шахта была решена именно так.

В большинстве случаев это происходит из-за двух файлов mysql-connector-java-3.0.14-production-bin.jar. Один в папке lib tomcat и другой в classpath проекта.

Просто попробуйте удалить mysql-connector-java-3.0.14-production-bin.jar из папки lib.

Таким образом, он работает для меня.

Из того, что я заметил, может быть две причины для этого исключения: (1) Имя вашего драйвера не написано правильно. (2) Драйвер не был надлежащим образом связан с Java-проектами. Шаги в Eclipse: (1) Создайте новый Java-проект. (2) копия Соединительный файл Jar (3) Щелкните правой кнопкой мыши проект Java и вставьте его туда. (4) Щелкните правой кнопкой мыши на проекте Java -> Свойства -> Путь сборки Java -> libraries-> Добавить Jar -> выберите проект ур (выберите файл jar из раскрывающегося списка) и нажмите «ОК».

добавьте артефакт из maven.

   mysql mysql-connector-java 5.1.6  

Решение прост.

Убедитесь, что соединитель базы данных может быть достигнут вашим classом пути при запуске (не компиляции) программы, например:

 java -classpath .;c:\path\to\mysql-connector-java-5.1.39.jar YourMainClass 

Кроме того, если вы используете старую версию Java (pre JDBC 4.0), перед выполнением DriverManager.getConnection требуется DriverManager.getConnection строка:

 Class.forName("your.jdbc.driver.TheDriver"); // this line is not needed for modern Java 

При разработке с использованием Ubuntu (Xubuntu 12.04.1) я «HAD» выполнял следующие действия:

С помощью

Eclipse Juno (загружен, не установлен через программный центр), Tomcat 7 (загружен в пользовательский каталог пользователя), также добавленный в качестве сервера в Eclipse, Dynamic Web Project с сервлет 3.0, MySQL Server на локальном хосте, настроенный и протестированный с помощью пользователя и пароля (обязательно проверьте) Драйвер соединителя MySQL 5.1.24 jar,

Я «HAD», и я повторяю «HAD», к нам оператор Class.Load («com.mysql.jdbc.Driver»), а также добавление соединителя driver.jar в папку веб-проекта lib, чтобы он работал в этой ситуации.

ВАЖНО !!: после того, как вы скопируете файл driver.jar в lib, убедитесь, что вы обновили проект в Eclipse до запуска сервлета через Tomcat.

Я попытался добавить файл jar-файла драйвера соединителя с помощью пути сборки с ClassLoad и без него, но это не сработало!

Надеюсь, что это поможет любому начинающему развитию с этой конкретной ситуацией: сообщество Java предоставляет «LOT» документации, но есть так много переменных, которые трудно охватить всех из них, и это очень усложняет работу нового парня.

Я думаю, если бы кто-нибудь мог объяснить, почему здесь требуется Class.Load (в этой ситуации), это было бы полезно.

наслаждаться

Поскольку никто не дал этот ответ, я также хотел бы добавить, что вы можете просто добавить файл драйвера jdbc ( mysql-connector-java-5.1.27-bin.jar в моем случае) в папку lib вашего сервера (Tomcat в моем случае). Перезагрузите сервер, и он должен работать.

  1. Поместите mysql-connector-java-5.0.8-bin.jar в $ CATALINA_HOME / lib

  2. Проверьте наличие опечатки в URL-адресе подключения, пример
    «jdbc: mysql: // localhost: 3306 / report» («report» – это имя db)

  3. Обязательно используйте имя машины (пример: localhost вместо ip-адреса (127.0.0.1))

Добавьте class драйвера в bootstrapclasspath. Проблема заключается в java.sql.DriverManager, который не видит драйверы, загруженные ClassLoaders, отличные от bootstrap ClassLoader.

Из другого streamа stackoverflow:

Во-вторых, убедитесь, что у вас есть драйвер JDBC MySQL aka Connector / J в пути к JMeter. Если вы его не загрузили, распакуйте и опустите mysql-connector-java-x.xx.xx-bin.jar в JMeter’s / lib папке. Перезапуск JMeter потребуется, чтобы выбрать библиотеку вверх ”

Убедитесь, что .jar-файл добавлен непосредственно в папку lib.

Вы можете закрепить банку на пути времени выполнения jboss следующим образом:

C: \ User \ user \ workspace \ jboss-as-web-7.0.0.Final \ standalone \ deployments \ MYapplicationEAR.ear \ test.war \ WEB-INF \ lib ca marche 100%

  • Остановить запланированный таймер при выключении tomcat
  • сервер tomcat не запускает сервер и приложение в STS
  • Как установить контекстный путь веб-приложения в Tomcat 7.0
  • java.lang.ClassNotFoundException: HttpServletRequest
  • Источник впрыска Джерси 2 для многочастных форм
  • Давайте будем гением компьютера.