java.sql.SQLException:Nosuitabledriverfoundfo。。。
前⼏天在使⽤⼀些组件的时候遇到了这个报错:java.sql.SQLException: No suitable driver found for jdbc:XXX,之后上⽹搜了⼀个⽅法解决了,可为什么能如此解决则在这⾥记录⼀下:
⼀、⽹上搜索的解决⽅案
《》
⽂中的解决办法是在jre\lib\ext上添加驱动jar包,问题解决;
但是解释就不是作者所说的需要把jar包放在外部jar包环境中。其根本原因是:程序没有加载驱动jar包;
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;
为什么使用bootstrap? 3、System Class Loader:加载classpath指定的jar或者⽬录;
他们的加载顺序是:先bootstrap加载,然后extension加载,最后system加载。
加载策略:向上委托策略,低级别类加载器(L)的要加载类,先由最⾼级别的类加载器先加载,若加载不成功则层层向下传递,直到该类加载器(L)也加载不了则报错。
⼀篇关于的⽂章;
在本⽂中,Class.forName()的类加载器就是调⽤者的类加载器,总之,只要能把驱动jar包加载上去就可以解决问题了,⽆论在哪⾥加载这个jar包。
三、参考资料
1、《》
2、《》
3、《》
4、《》
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论