大夢想家

          5年開發工程師,2年實施經理,X年售前顧問,......
          數據加載中……
          RCP實踐之第三方JAR包
              感謝大家對上一篇文章的拍磚,引起的反響不小,目的達到了~,希望可以繼續板兒磚橫飛!
              今天來說說第三方JAR包的引入。RCP開發(或者plugin開發)中最讓人頭疼就是第三方JAR包的引入了,很多初學的朋友常常頭疼,介紹的文章也不少了,如果搞不定,自己google一下就可以了。
              為什么第三方JAR包會引發如此眾多的問題,其實并不是Eclipse的錯,而是先入為主的錯。如果你一開始就就接觸Eclipse開發,以后再做不同java開發,你就會覺得java的類加載機制是變態了~Eclipse的類加載機制是基于OGSI的實現,它完成了插件的獨立加載和獨立維護,正是因為這種變態的類加載機制,才有了我們頭大的第三方jar包的問題,也正是這種偉大的類加載機制,才有了即插即用的思路的誕生。
              大多數簡單的RCP項目都是將所有的JAR包放入本地項目中,然后直接進引入項目路徑,就開始整了,對于小的應用,或者開發人員少的情況下,這樣是可行的,也是便捷的~但是RCP的目標是大型的企業級應用,一個系統由十幾個,幾十個插件組成,是很正常的。所以就要求我們將RCP中所有用到的第三方JAR包統一管理,統一維護,給開發人員少一些煩惱。
              思路有兩種:
          1.將JAR文件plugin樣子包裝,及新建Plug-in from existing jar archives 項目,然后選擇JAR文件,再取消Unzip the jar archives into the project 選項,然后其它的插件依賴它就可以了。
          2.新建一個不同插件項目,然后把第三方JAR包放入這個項目,然后引入到此項目中,在plugin.xml的runtime配置頁的Exported Packages 選Add... 再選擇要發布出去的包路徑,然后其他的插件依賴它就可以了。
              官方推薦的方式是第一種,個人認為第一種確實很好,可以非常好而且方便的維護第三方JAR包。但是我還是選擇了第二種方式,理由是,配置文件讀取的問題。
              每一個插件文件都會維護一份屬于自己的配置文件,只有這樣才能做到自我獨立。但是這兩種方式都不能使其他插件項目的配置文件獨立維護,原因就是Eclipse那討厭又強大的類加載機制。
              使用第一種方式,配置文件必須放在你記載的進來的JAR包的里面,這樣Eclipse類加載機才會加載并處理,除非選擇了Unzip the jar archives into the project 選項,并把配置文件和一堆的class文件放在同一目錄下類加載機才能發現。我想這種方式誰都不會喜歡,要么就是我們要創造自己的JAR包,要么工作臺遍布了各種各樣來自世界各地的class文件。
              使用第二種方式,是通過運行時將需要發布出來供別人依賴的package發布出來,而配置文件則需要放在此插件項目中。相對而言,這種比上一種有很大的好處,而且也不是那么難維護。

              以上只是自己項目中的一些總結,關于第三方JAR包的問題,我查了很多資料,好像逃不過這三種方式(直接在項目中依賴算一種),不知道各位大俠還有沒有更好的辦法,即能處理好第三方JAR包,又能保持各個插件維護自己獨立的配置文件?

          客戶虐我千百遍,我待客戶如初戀!

          posted on 2007-06-20 21:43 阿南 閱讀(2931) 評論(2)  編輯  收藏 所屬分類: Eclipse-RCP

          評論

          # re: RCP實踐之第三方JAR包 2007-10-26 09:21 施志

          你好, 看了你寫的文章,感覺受益非淺, 但有些地方還是不明白,
          在我將第三方JAR包做成插件 ,在導入時,總是報錯
          懇求 你發幾篇講解 關于 Rcp 第三方JAR 包 做成插件導入項目的文章給我, shzhlo@hotmail.com
          非常感謝!
            回復  更多評論    

          # re: RCP實踐之第三方JAR包 2008-08-06 09:09 shenze

          一樣的問題,就是用官方方法的都不行。
          shenze406@sina.com謝了!
            回復  更多評論    
          主站蜘蛛池模板: 涞源县| 平山县| 正蓝旗| 龙游县| 南漳县| 陆良县| 浦县| 北辰区| 布拖县| 依安县| 灵山县| 乌鲁木齐市| 广饶县| 通山县| 宜川县| 辽宁省| 永定县| 溆浦县| 南宁市| 崇阳县| 郓城县| 桓台县| 安丘市| 乌拉特前旗| 新蔡县| 平顶山市| 郓城县| 嘉禾县| 广汉市| 双辽市| 博白县| 洞口县| 循化| 安龙县| 汝南县| 朔州市| 营山县| 盐城市| 临沂市| 玛沁县| 分宜县|