<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          氣炸!又一次被編輯器坑了!

          共 1509字,需瀏覽 4分鐘

           ·

          2021-04-22 06:19

          來看看你中過這招么?

          大家好,我是魚皮。

          最近工作比較忙碌,做完技術(shù)選型后,這兩周開始上手開發(fā)了。首先是用 Java 數(shù)據(jù)訪問框架對接 PgSQL,本來以為至多半個小時就能搞定了,結(jié)果沒想到,我竟然被編輯器給坑了!耽誤了好一會兒。

          把被坑的經(jīng)歷分享出來,希望大家引以為戒。

          踩坑

          我選用的是 MyBatis 框架,來實現(xiàn)在 Java 中操作 PgSQL 數(shù)據(jù)庫。

          該框架需要讀取 xml 配置文件來實現(xiàn)對象關(guān)系映射,看了一下項目目錄,驚喜地發(fā)現(xiàn)之前有同事已經(jīng)接入了 MyBatis,并且寫好了一份配置文件。

          已有配置文件如下:

          既然有現(xiàn)成的,那我只需要有樣學(xué)樣,復(fù)制粘貼即可。于是,遵循同事取包名的風(fēng)格,我新建了一個目錄:

          然后把配置文件復(fù)制過去,略作修改即可,當前目錄如下:

          搞定配置文件后,就可以試著讀取它,連接下數(shù)據(jù)庫。再次驚喜地發(fā)現(xiàn)同事已經(jīng)編寫好了一個測試類,代碼如下:

          public static void main(String[] args) {
            DatabaseClient pg = new DatabaseClient(
              // 數(shù)據(jù)庫屬性文件
            "db.properties",
              // 編寫的配置文件
            "aaa/config/sql-map-config.xml"
            );
          }

          之前的同事測試的是 aaa/config 配置文件,那我只需要把 aaa 改成 bbb,不就可以連接成功了么?

          運行!

          嘔豁,報錯了,說是找不到文件?

          奇怪了,文件明明存在啊?大家來幫忙找找茬,到底是哪里出現(xiàn)了問題呢?

          排坑

          下面來排排坑吧,首先我研究了一會兒 aaabbb 目錄下配置文件的差異,結(jié)果完全找不出問題。

          好吧,是我傻了,出了 bug 要從報錯信息查起。既然說找不到文件,那就看一下構(gòu)建目錄中配置文件是否有被打包進去。

          這一看,果然查出問題了,構(gòu)建目錄如下:

          大家發(fā)現(xiàn)了差異了么,aaa/config 是兩個獨立的目錄,對應(yīng)兩個 Java 的包;而 bbb.config 根本就是一個目錄,只不過目錄名稱中正好出現(xiàn)了包名的點分隔符!

          所以 bbb.config 的配置文件路徑應(yīng)該是 bbb.config/sql-map-config.xml,而不是 bbb/config/sql-map-config.xml

          唉,原來是中了開發(fā)工具的 “障眼法”,在 JetBrains 全家桶中,有一個視圖設(shè)置,當包中沒有文件時,會對中間包進行折疊。

          所以最初我建目錄的時候,就應(yīng)該先建立 bbb 目錄,再在 bbb 下建立 config目錄,形成嵌套包,而不是直接建了一個名稱為 bbb.config 的目錄。

          這個微小的差別如果不進入構(gòu)建目錄,是根本發(fā)現(xiàn)不了的。

          表面上看不出區(qū)別

          雖然這個問題歸根到底是由自己的粗心導(dǎo)致的,但也值得記錄下來,防止以后遇到類似的錯誤。


          就是這樣,希望大家以后在使用編輯器的時候多個心眼兒,不要完全相信它!

          往期推薦

          我工作中不可或缺的寶貝們!

          騰訊二面,我被 “賽馬” 問題難住了

          小知識,啥是熱數(shù)據(jù)探測?

          瀏覽 84
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  av婷婷综合在线网 | 国产三级精品三级在线观看 | 日本片中文字幕网络视频 | 欧美v精品 | 中国农村乱婬片AA片 |