Вопрос по java – Не найден подходящий драйвер для jdbc: mysql: // localhost: 3306 / test

0

Когда я пытаюсь запустить приложение JSF на Tomcat 7, оно выдает это исключение.

Caused by: java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/test
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl.getConnection(DriverManagerConnectionProviderImpl.java:192)
at org.hibernate.internal.AbstractSessionImpl$NonContextualJdbcConnectionAccess.obtainConnection(AbstractSessionImpl.java:278)
at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.obtainConnection(LogicalConnectionImpl.java:297)
... 51 more

Если я добавлю эту строку перед созданием EntitiyManagerFactory, она будет работать нормально.

Class.forName("com.mysql.jdbc.Driver");
emf = Persistence.createEntityManagerFactory("manager1");

Мои зависимости

<dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>4.1.2.Final</version>
    </dependency>

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.19</version>
    </dependency>

Также у меня отлично работает приложение tomcat 6, без добавленияClass.forName("com.mysql.jdbc.Driver");

Есть идеи, чтобы решить эту проблему? Спасибо

Ваш Ответ

5   ответов
6

Я столкнулся с этой проблемой в Hibernate 4.1.2, прежде чем наткнулся наhttps://forum.hibernate.org/viewtopic.php?p=2454336, Насколько я могу видеть, это немного несовместимость между более поздними версиями Tomcat (в исправлениях утечек в DeviceManager) и Hibernate 4.1.2.

Другими обходными путями являются явный вызов регистрации драйвера, как в ответе Брэда Уитакера, или чтобы убедиться, что JreMemoryLeakPreventionListener не защищает DriverManager путем добавленияdriverManagerProtection="false" к определению прослушивателя в $ CATALINA_HOME / conf / server.xml - то есть:

<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" driverManagerProtection="false">
1

4.1.4final.

1

glassfish) мне также пришлось поместить jar драйвера в папку библиотеки по умолчанию на сервере.

4

когда перенес рабочий .war из Tomcat 5.5 и Java 6 в Tomcat 7 и Java 7. Мой ранее работающий .war начал выдавать & quot; java.sql.SQLException: не найден подходящий драйвер для jdbc: sqlserver .. . & Quot ;. Я смог решить, просто добавив

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

непосредственно перед вызовом

java.sql.DriverManager.getConnection("myUrl");

Мне известно, что в документации сказано, что этот дополнительный вызов не требуется с драйвером jdbc4, но это устранило мою проблему. Jar драйвера (sqljdbc4.jar) был расположен в WEB-INF / lib моего .war.

1

что класс драйвера не доступен во время выполнения для вашего приложения, поместите jar драйвера в/WEB-INF/lib

Error: User Rate Limit Exceeded mkayman

Похожие вопросы