java.sql.SQLException: No suitable driver found for jdbc

  前幾天在使用一些組件的時候遇到了這個報錯:java.sql.SQLException: No suitable driver found for jdbc:XXX,以後上網搜了一個方法解決了,可爲何能如此解決則在這裏記錄一下:html

1、網上搜索的解決方案java

  《No Suitable Driver Found For Jdbc_個人解決方法sql

  文中的解決辦法是在jre\lib\ext上添加驅動jar包,問題解決;bootstrap

  可是解釋就不是做者所說的須要把jar包放在外部jar包環境中。其根本緣由是:程序沒有加載驅動jar包;ui

  當程序沒有加載驅動包,就運行DriverManager.getConnection(url,usr,psd),就會報這個錯誤:url

  No suitable driver found for jdbc:XXXspa

  

  這裏缺乏了Class.forName()致使的,當我按照前面的解決辦法,把驅動包放在jre\lib\ext上的時候,一樣可以解決問題:.net

   

  顯然易見:出現No suitable driver found for jdbc這個報錯的緣由是程序沒有加載驅動程序jar包,儘管在lib上已經包含了這個jar包。htm

2、關於類加載器blog

  網上關於類加載器的資料

  類加載時採用的樹形的委託機制,默認有三個類加載器:

  一、Bootstrap Class Loader:加載jre/lib/rt.jar;在樹的根節點

  二、Extension Class Loader:加載jre/lib/ext/*.jar

  三、System Class Loader:加載classpath指定的jar或者目錄;

  他們的加載順序是:先bootstrap加載,而後extension加載,最後system加載。

  加載策略:向上委託策略,低級別類加載器(L)的要加載類,先由最高級別的類加載器先加載,若加載不成功則層層向下傳遞,直到該類加載器(L)也加載不了則報錯。

  一篇關於JVM類加載機制的文章;

  在本文中,Class.forName()的類加載器就是調用者的類加載器,總之,只要能把驅動jar包加載上去就能夠解決問題了,不管在哪裏加載這個jar包。

3、參考資料

  一、《No Suitable Driver Found For Jdbc_個人解決方法

  二、《No suitable driver found for jdbc:XXX

  三、《Java 若是將JAR文件放入jre/lib/ext目錄中,會遇到什麼麻煩?

  四、《JVM類加載機制

相關文章
相關標籤/搜索