星空网 > 软件开发 > Java

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

  前几天在使用一些组件的时候遇到了这个报错: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

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

  这里缺少了Class.forName()导致的,当我按照前面的解决办法,把驱动包放在jre\lib\ext上的时候,同样能够解决问题:

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

  显然易见:出现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类加载机制》




原标题:java.sql.SQLException: No suitable driver found for jdbc

关键词:JAVA

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

卡塔尔专线运输:https://www.goluckyvip.com/tag/35037.html
卡亚俄海运:https://www.goluckyvip.com/tag/35038.html
开店代运营:https://www.goluckyvip.com/tag/35039.html
Yura zhong:https://www.goluckyvip.com/tag/3504.html
开店代运营服务商:https://www.goluckyvip.com/tag/35040.html
开店代运营计划:https://www.goluckyvip.com/tag/35041.html
凌晨三点到天津西站可以去哪里? :https://www.vstour.cn/a/410229.html
Temu广告投入上千万美元, 在美知名度高达88%!:https://www.kjdsnews.com/a/1842236.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流