簡體   English   中英

找不到適用於jdbc:mysql:// localhost:3306 / test的驅動程序

[英]No suitable driver found for jdbc:mysql://localhost:3306/test

當我嘗試在Tomcat 7上運行我的JSF應用程序時,它將引發此異常。

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");

有解決這個問題的主意嗎? 謝謝

第一個也是實際的解決方案:嘗試使用Hibernate 4.1.0和4.1.3.Final。

在最終跌入https://forum.hibernate.org/viewtopic.php?p=2454336之前,我在Hibernate 4.1.2上遇到了此問題。 據我所知,Tomcat的更高版本(針對DeviceManager的漏洞性質的修復程序)與Hibernate 4.1.2之間有些不兼容。

其他解決方法是像Brad Whitaker的回答中那樣顯式調用驅動程序的注冊,或者通過在$ CATALINA_HOME / conf / server的偵聽器定義中添加driverManagerProtection="false"來確保JreMemoryLeakPreventionListener沒有保護DriverManager。 xml-即:

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

我從Tomcat 5.5和Java 6遷移到Tomcat 7和Java 7時,遇到了同樣的問題。我以前的.war開始拋出“ java.sql.SQLException:找不到適用於jdbc:sqlserver的驅動程序... ”。 我能夠通過簡單地添加來解決

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

在調用之前

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

我知道文檔說明jdbc4驅動程序不需要此附加調用,但這已解決了我的問題。 驅動程序jar(sqljdbc4.jar)位於我的.war的WEB-INF / lib中。

問題是驅動程序類在您的應用程序運行時不可用,請將驅動程序jar放入/WEB-INF/lib

在某些服務器(jboss,glassfish)上,我還必須將驅動程序jar放入服務器的默認庫文件夾中。

我有類似的問題。 通過將休眠模式升級到4.1.4final可以解決此問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM