好好生活,努力工作,天天向上!

          BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
            46 Posts :: 1 Stories :: 178 Comments :: 0 Trackbacks
              最近同事被一個問題困惱了很久,讓我?guī)兔聪?/span>,問題是這樣的,我們的平臺是基于Eclipse RCP 3.3.0,將每個功能模塊作為一個插件工程,系統(tǒng)提供了基于Http的自動更新插件的功能,要求在插件更新完成后將舊版本刪除掉(我們自己寫的版本比較方法),本來一切運(yùn)行正常,但是負(fù)責(zé)部署的同事將插件系統(tǒng)的版本號升級成4段,比如以前的版本組成是“主版本號.次版本號.內(nèi)部版本號現(xiàn)在發(fā)展到主版本號.次版本號.內(nèi)部版本號.構(gòu)建版本號”比如將"3.0.0100"升級到"3.0.0100.1",這時候自動刪除舊插件的功能就運(yùn)行的不正常,比如插件中有個主插件版本號為3.0.0100.9啟動后可以刪除版本號為"3.0.0100.8"的插件,而"3.0.0100.11"的插件卻無法刪除"3.0.0100.9"的插件。

             其實這和OSGI的版本機(jī)制有關(guān)系,Eclipse內(nèi)部插件版本標(biāo)記和比較是通過"org.eclipse.osgi.*"插件中的Version.java完成的,Version 中的字段major表示主版本號、minor表示次版本號、micro表示微型版本號(內(nèi)部版本號),這三個字段的類型都是int型的,而Version中的qualifier用來表示構(gòu)建版本號,類型是字符串,當(dāng)時如果第四位構(gòu)建版本號如果是純數(shù)字的話,Eclipse會自動格式化一下,再進(jìn)行比較,比如比較08和10,格式之后變成8 vs 10,通過字符串的compare方法會得到8比10大7,當(dāng)然它就會認(rèn)為"oss.client_1.1.1.08"的版本要比"oss.client_1.1.1.10"高,這可能是Eclipse 3.3.0 版本的一個Bug,我在Eclipse 3.3.2中沒有發(fā)現(xiàn)這個問題,在Eclipse 3.4 3.5也已經(jīng)修復(fù)好了,如果你使用的是Eclipse 3.3.0并且也有這樣的需求的話要小心了。
          posted on 2009-09-18 18:14 VWPOLO 閱讀(1777) 評論(2)  編輯  收藏 所屬分類: Eclispe 插件開發(fā)

          Feedback

          # re: Eclipse 3.3.0的插件版本問題 2009-09-18 19:32 nonono
          我也碰到同樣問題哈  回復(fù)  更多評論
            

          # re: Eclipse 3.3.0的插件版本問題[未登錄] 2013-10-09 22:27 lx
          我也遇到了這種問題,哎,糾結(jié)了。。  回復(fù)  更多評論
            

          主站蜘蛛池模板: 鄢陵县| 岗巴县| 株洲县| 阿坝县| 滁州市| 岐山县| 天峻县| 平安县| 阿城市| 慈溪市| 嫩江县| 盱眙县| 斗六市| 岳阳市| 德安县| 肃北| 潮安县| 普兰店市| 清原| 沧州市| 宝丰县| 陇川县| 邢台市| 湄潭县| 外汇| 信阳市| 高台县| 繁峙县| 崇阳县| 长沙市| 咸宁市| 新郑市| 福贡县| 防城港市| 洞口县| 济宁市| 瑞安市| 太保市| 马山县| 繁峙县| 同仁县|