当程序员真难,又一次被编辑器坑了!
來看看你中過這招么?
大家好,我是魚皮。
最近工作比較忙碌,做完技術選型后,這兩周開始上手開發了。首先是用 Java 數據訪問框架對接 PgSQL,本來以為至多半個小時就能搞定了,結果沒想到,我竟然被編輯器給坑了!耽誤了好一會兒。
把被坑的經歷分享出來,希望大家引以為戒。
踩坑
我選用的是 MyBatis 框架,來實現在 Java 中操作 PgSQL 數據庫。
該框架需要讀取 xml 配置文件來實現對象關系映射,看了一下項目目錄,驚喜地發現之前有同事已經接入了 MyBatis,并且寫好了一份配置文件。
已有配置文件如下:
既然有現成的,那我只需要有樣學樣,復制粘貼即可。于是,遵循同事取包名的風格,我新建了一個目錄:
然后把配置文件復制過去,略作修改即可,當前目錄如下:
搞定配置文件后,就可以試著讀取它,連接下數據庫。再次驚喜地發現同事已經編寫好了一個測試類,代碼如下:
public static void main(String[] args) {DatabaseClient pg = new DatabaseClient(// 數據庫屬性文件"db.properties",// 編寫的配置文件"aaa/config/sql-map-config.xml"); }之前的同事測試的是 aaa/config 配置文件,那我只需要把 aaa 改成 bbb,不就可以連接成功了么?
運行!
嘔豁,報錯了,說是找不到文件?
奇怪了,文件明明存在啊?大家來幫忙找找茬,到底是哪里出現了問題呢?
排坑
下面來排排坑吧,首先我研究了一會兒 aaa 和 bbb 目錄下配置文件的差異,結果完全找不出問題。
好吧,是我傻了,出了 bug 要從報錯信息查起。既然說找不到文件,那就看一下構建目錄中配置文件是否有被打包進去。
這一看,果然查出問題了,構建目錄如下:
大家發現了差異了么,aaa/config 是兩個獨立的目錄,對應兩個 Java 的包;而 bbb.config 根本就是一個目錄,只不過目錄名稱中正好出現了包名的點分隔符!
所以 bbb.config 的配置文件路徑應該是 bbb.config/sql-map-config.xml,而不是 bbb/config/sql-map-config.xml!
唉,原來是中了開發工具的 “障眼法”,在 JetBrains 全家桶中,有一個視圖設置,當包中沒有文件時,會對中間包進行折疊。
所以最初我建目錄的時候,就應該先建立 bbb 目錄,再在 bbb 下建立 config目錄,形成嵌套包,而不是直接建了一個名稱為 bbb.config 的目錄。
這個微小的差別如果不進入構建目錄,是根本發現不了的。
雖然這個問題歸根到底是由自己的粗心導致的,但也值得記錄下來,防止以后遇到類似的錯誤。
就是這樣,希望大家以后在使用編輯器的時候多個心眼兒,不要完全相信它!
總結
以上是生活随笔為你收集整理的当程序员真难,又一次被编辑器坑了!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Oracle Database Admi
- 下一篇: 可能是最强大的【CSS】动画库