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小时内删除。