java c3p0 配置文件_关于最近一直纠缠我的c3p0-config.xml配置文件找不到的问题终于解决了,\(^o^)/...

从一开始看官方的文档中的说明,关于配置c3p0连接池,如果要使用xml来配置,需要将xml文件放在classpath的路径下。所以我就放好了

916936a1ab12bcf6ba4d36fe9fecdbdf.png

结果运行后,等待了很久,最后得到一堆红色的让人崩溃的error8c3439cea0a20fe9c796c80ff8ccdbdb.png

心态瞬间崩了,喝了一口 雪碧纤维+ (这不是广告-_-)冷静一下,经过数分钟的搜索,网上的过来人告诉我可能是mysql的驱动版本不匹配,或者需要把这些jar包都扔到jre的lib下的ext文件夹里面,于是我更换了最新的mysql-connector-java-6.0.6,结果依然不行。

这时我突然观察到c3p0的日志输出中赫然写着:jdbcUrl=null,怎么回事,我明明配置了url啊,怎么会这样,明明官网说了只需要通过

DataSource ds = new ComboPooledDataSource();

这么一行代码就会自动加载配置文件的呢,于是我不信邪,下载了源码,经过调试,找到了加载配置文件的地方,

就是通过调用 类C3P0ConfigXmlUtils中的extractXmlConfigFromDefaultResource方法来获取xml文件,原理很简单,依然是通过T.class.getClassLoader().getResourceAsStream("path")来获取classpath路径下的资源文件的,我又发现这个类的xml文件路径居然是加了/的,按道理说使用classloader是无法识别的呢,于是又发现了源码中getResourceAsStream里面早就封装好了去掉头部的/的方法。

一切都是那么的合理,难道我是个傻子吗???我不禁发出疑问,想到难道是操作系统影响,于是换了一台windows10的系统试了一次,居然真的没问题,我去。难道我找到了大佬的bug,不不不,经过自我鉴定与审视,这是不可能的。

突然间,我又赫然发现,日志中的打印的c3p0版本居然还是0.9.1.2,我明明已经换成了0.9.5.2的jar包,为什么,想到难道是IED有缓存???

于是又动手在lib附近通过命令行创建一个touch TestDemo.java文件,再一次尝试,javac TestDemo.java,咦?居然不需要指定jar吗,再一次又打印出了0.9.1.2的版本信息,我屮艸芔茻

就在这时一个巨大的灵感打中了我,难道是jre中的classpath影响了我的发挥,此时程序加载的路径就会是jre中的路径了,我去把所有其他地方的jar包统统删除后,再一次编译,终于终于,成功了,终于找到了c3p0-config.xml所以说jar包的加载顺序真的很重要啊,同志们,一点点的疏忽就这么断送了我的一天,希望以后这种问题不要再出现了,心里舒了一口气,感激!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值