java.lang.ClassNotFoundException: com.mysql.jdbc.Driver解决方式
昨天整理桌面的时候将桌面的一堆文件移动到F盘去了,结果导致原来建的一些项目名称所有出现红色感叹号,打开一看,原来是由于我把hibernate的那些jar包移走了。导致user library里那些jar在原来的路径里找不到了,所以出现红色感叹号,在写新的项目的时候就不能把原来写的项目copy过来改了。仅仅好又一次新建了个java project,然后又一次导包,编好代码执行一下。报了例如以下错误:java.lang.ClassNotFoundException: com.mysql.jdbc.Driver。
错误显示没有找到MySQL的驱动,第一选择就是去查看MySQL驱动包究竟导入没,看了一下确实导入了。难道是我的配置文件出错了?不应该啊,我从hibernate文档里copy进去的,并且前几天也是这样copy进去的。没出问题,但还是细致去看了一眼,并跟曾经的项目对比了一下 。没错。
既然配置文件没出问题,仅仅可能是MySQL驱动包出问题了。果断把这个驱动包remove了,再执行。还是这个错误。
也就是说摩罗我这个驱动包放在项目里和没放在项目里没不论什么差别,难道是包出问题了?应该不会,没动过,仅仅好再把驱动包导入。这时奇迹出现了,执行成功了。
细致回忆为啥是这样,后来才发现原来我刚開始导入这个驱动包手快直接ctrl+v复制进去了,并没有add to build path里去。果断把这个包remove了,再试试直接复制进去,果然又出现这个情况了。
事实上导包的时候是能够复制进去,但必须进行add to build path这个步骤,或者直接通过add external jars来导包。
最后讲讲这个问题在web项目里咋解决:
a.确认包已经被导入webproject文件夹。
b.把mysql-connector-java-3.1.13-bin.jar 导入到tomcat的lib文件夹以下就ok了。
由于在web项目中。当Class.forName("om.mysql.jdbc.Driver");时myeclipse是不会去查找字符串,不会去查找驱动的。所以仅仅须要把mysql-connector-java-3.1.13-bin.jar copy到tomcat下lib文件夹就能够了。
当然在在java项目中。仅仅须要引入mysql-connector-java-5.1.7-bin.jar就能够执行java项目。
最后插一个新犯的错误,我原来做项目都用的铁通的无线网,今天用联通的。然后又出现了错误:java.lang.ClassNotFoundException: com.mysql.jdbc.Driver。首先就排除了上面那些错误原因。由于全是从原来项目copy项目环境过来的,jar包没问题,引入的方式也是正确的。所以就怀疑是连接时的ip写错了,毕竟今天换网才出现的这个问题。并且我的MySQL是装在虚拟机里的,于是进虚拟机->执行->cmd->ipconfig里查了ip。发现IP由原来的192.168.199.230变成192.168.1.111,并且主机的ip地址也从192.168.199.160变成192.168.1.108。显然ip地址变了,于是就把配置文件中的MySQLserver地址改成了192.168.1.111,然后顺利连接成功了。
最后解释一下很多人疑惑的问题:为什么自己从ip138站点查出来的ip地址和自己通过cmd->ipconfig查出来的地址为啥是不一样的?事实上这个192.168.*.*是私网ip地址,通过地址转化(NAT)就能够转化成公网ip了。而这个公网IPj就是你从ip138站点上查出来的那个IP地址。
这里插一句题外话。使用虚拟机的时候有可能出现虚拟机ping主机能ping通,主机ping虚拟机却ping不通,这个问题在虚拟机配置的时候将NAT模式切换成桥接模式就能够解决。
总结一下解决的方法:
1.检查MySQL驱动包有问题没,在网上下载的MySQL驱动包有可能会出问题。尽量下载那种压缩包。摩罗我曾经就连着下载了好几个jar包都出问题,最后又一次下载了个 压缩包。而不是直接的jar包才解决,由于压缩包不会那么easy丢失文件。
2.假设MySQL和MyEclipse不是装在同一台机器上,或者是MySQL是装在虚拟机里的。必须查看连接语句里的ip地址是否正确。
3.检查jar包导入的方式正确与否。假设是直接复制进去的,就必须add to build path或者直接通过add external jars来导包。
4.假设是web项目,就必须把mysql-connector-java-3.1.13-bin.jar copy到tomcat下lib文件夹下。然后project->clean一下。
5.还不能解决。能够考虑把mysql-connector-java-3.1.13-bin.jar的路径放到classpath以下
尊重版权,转载请不要删除下方二维码并注明本文链接
欢迎关注行者摩罗微信公众号(xingzhemoluo),共同交流编程经验,扫描下方二维码就可以;