昨天整理桌面的时候将桌面的一堆文件移动到F盘去了,结果导致原来建的一些项目名称全部出现红色感叹号,打开一看,原来是因为我把hibernate的那些jar包移走了,导致user library里那些jar在原来的路径里找不到了,所以出现红色感叹号,在写新的项目的时候就不能把原来写的羡慕copy过来改了,只好重新新建了个java project,然后重新导包,编好代码运行一下,报了如下错误:java.lang.ClassNotFoundException: com.mysql.jdbc.Driver。
错误显示没有找到MysSQL的驱动,第一选择就是去查看MySQL驱动包到底导入没,看了一下确实导入了。难道是我的配置文件出错了?不应该啊,我从hibernate文档里copy进去的,而且前几天也是这样copy进去的,没出问题,但还是仔细去看了一眼,并跟以前的项目对照了一下 ,没错。但却怀疑到一个ip问题,就是我原来做项目都用的铁通的无线网,今天用联通的,而我的MySQL是装在虚拟机里的,会不会是ip问题,于是进虚拟机->运行->cmd->ipconfig里查了ip,没变啊,还是192.168.199.230,而且主机的ip地址也没变,也还是192.168.199.160。仔细一想,这个192.168.*.*是私网ip地址,是我自己设的,跟我联的啥网没关系啊,只要不冲突,通过地址转化(NAT)就可以转化成公网ip了。想到NAT突然发现我的虚拟机设置的不是NAT方式,而是桥接模式,难道是这个出问题了?百度了一下,NAT和桥接模式作用的根本不是同一层,桥接模式作用在数据链路层,NAT作用在网络层,他俩不会干扰。
这里插一句题外话,使用虚拟机的时候有可能出现虚拟机ping主机能ping通,主机ping虚拟机却ping不通,这个问题在虚拟机配置的时候设成桥接模式就可以解决。
回到正题,既然配置文件没出问题,只可能是MySQL驱动包出问题了,果断把这个驱动包remove了,再运行,还是这个错误。也就是说我这个驱动包放在项目里和没放在项目里没任何区别,难道是包出问题了?应该不会,没动过,只好再把驱动包导入,这时奇迹出现了,运行成功了。仔细回想为啥是这样,后来才发现原来我刚开始导入这个驱动包手快直接ctrl+v复制进去了,并没有add to build path里去。果断把这个包remove了,再试试直接复制进去,果然又出现这个情况了。
其实导包的时候是可以复制进去,但必须进行add to build path这个步骤,或者直接通过add external jars来导包。
最后讲讲这个问题在web项目里咋解决:
a.确认包已经被导入web工程目录。
b.把mysql-connector-java-5.1.7-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项目。
尊重版权,转载请不要删除下方二维码并注明本文链接
欢迎关注行者摩罗微信公众号(xingzhemoluo),共同交流编程经验,扫描下方二维码即可;