java c3p0 配置文件_关于最近一直纠缠我的c3p0-config.xml配置文件找不到的问题终于解决了,\(^o^)/...
從一開始看官方的文檔中的說明,關(guān)于配置c3p0連接池,如果要使用xml來配置,需要將xml文件放在classpath的路徑下。所以我就放好了
結(jié)果運行后,等待了很久,最后得到一堆紅色的讓人崩潰的error
心態(tài)瞬間崩了,喝了一口 雪碧纖維+ (這不是廣告-_-)冷靜一下,經(jīng)過數(shù)分鐘的搜索,網(wǎng)上的過來人告訴我可能是mysql的驅(qū)動版本不匹配,或者需要把這些jar包都扔到j(luò)re的lib下的ext文件夾里面,于是我更換了最新的mysql-connector-java-6.0.6,結(jié)果依然不行。
這時我突然觀察到c3p0的日志輸出中赫然寫著:jdbcUrl=null,怎么回事,我明明配置了url啊,怎么會這樣,明明官網(wǎng)說了只需要通過
DataSource ds = new ComboPooledDataSource();
這么一行代碼就會自動加載配置文件的呢,于是我不信邪,下載了源碼,經(jīng)過調(diào)試,找到了加載配置文件的地方,
就是通過調(diào)用 類C3P0ConfigXmlUtils中的extractXmlConfigFromDefaultResource方法來獲取xml文件,原理很簡單,依然是通過T.class.getClassLoader().getResourceAsStream("path")來獲取classpath路徑下的資源文件的,我又發(fā)現(xiàn)這個類的xml文件路徑居然是加了/的,按道理說使用classloader是無法識別的呢,于是又發(fā)現(xiàn)了源碼中g(shù)etResourceAsStream里面早就封裝好了去掉頭部的/的方法。
一切都是那么的合理,難道我是個傻子嗎???我不禁發(fā)出疑問,想到難道是操作系統(tǒng)影響,于是換了一臺windows10的系統(tǒng)試了一次,居然真的沒問題,我去。難道我找到了大佬的bug,不不不,經(jīng)過自我鑒定與審視,這是不可能的。
突然間,我又赫然發(fā)現(xiàn),日志中的打印的c3p0版本居然還是0.9.1.2,我明明已經(jīng)換成了0.9.5.2的jar包,為什么,想到難道是IED有緩存???
于是又動手在lib附近通過命令行創(chuàng)建一個touch TestDemo.java文件,再一次嘗試,javac TestDemo.java,咦?居然不需要指定jar嗎,再一次又打印出了0.9.1.2的版本信息,我屮艸芔茻
就在這時一個巨大的靈感打中了我,難道是jre中的classpath影響了我的發(fā)揮,此時程序加載的路徑就會是jre中的路徑了,我去把所有其他地方的jar包統(tǒng)統(tǒng)刪除后,再一次編譯,終于終于,成功了,終于找到了c3p0-config.xml所以說jar包的加載順序真的很重要啊,同志們,一點點的疏忽就這么斷送了我的一天,希望以后這種問題不要再出現(xiàn)了,心里舒了一口氣,感激!!!
總結(jié)
以上是生活随笔為你收集整理的java c3p0 配置文件_关于最近一直纠缠我的c3p0-config.xml配置文件找不到的问题终于解决了,\(^o^)/...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java多线程优先级的方法_Java多线
- 下一篇: java 编译开关_java – 字符串