程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> java.sql.SQLException: No suitable driver found for jdbc,nosuitabledriver

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

編輯:JAVA綜合教程

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


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

一、網上搜索的解決方案

  《No Suitable Driver Found For Jdbc_我的解決方法》

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

  但是解釋就不是作者所說的需要把jar包放在外部jar包環境中。其根本原因是:程序沒有加載驅動jar包;

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

  No suitable driver found for jdbc:XXX

  

  這裡缺少了Class.forName()導致的,當我按照前面的解決辦法,把驅動包放在jre\lib\ext上的時候,同樣能夠解決問題:

   

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

二、關於類加載器

  網上關於類加載器的資料:

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

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

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

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

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

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

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

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

三、參考資料

  1、《No Suitable Driver Found For Jdbc_我的解決方法》

  2、《No suitable driver found for jdbc:XXX》

  3、《Java 如果將JAR文件放入jre/lib/ext目錄中,會遇到什麼麻煩?》

  4、《JVM類加載機制》

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved