最近學習RCP,于是需要查看一些源碼。有些源碼在Eclipse3.0下一點問題都沒有,可是將Eclipse SDK更新到3.1后,好多源碼都報錯,無法運行。而且大多數(shù)是同一個錯誤。具體錯誤是在META-INF目錄下的MENIFEST.MF中出現(xiàn)的。如下圖所示:
          o_Eclipse3.0-3.1-6.bmp
          改了半天也不知道是什么方面的原因。把鼠標放在出錯提示處,發(fā)現(xiàn)有如下圖所示的提示:
          o_Eclipse3.0-3.1-11.bmp

          然后查找了大量資料,又用3.1版的Eclipse自動生成了MENIFEST.MF文件,看了一下開頭,比這個插件的開始處在Bundle-SymbolicName中多了這么一項:
          Bundle-SymbolicName:Test; singleton:=true
          那就將這句話加上吧!
          o_Eclipse3.0-3.1-33.bmp

          滿以為這次應(yīng)該沒什么問題了,可誰知還是出錯。具體報的錯誤是這樣的:

          Eclipse3.0-3.1-222.bmp

          上面說聲明擴展或擴展點的插件必須將"singleton"屬性設(shè)置為"true",查了所有的擴展和擴展點項,都沒有發(fā)現(xiàn)提示中所說的singleton屬性,也就當然不知道如何設(shè)置為"true"了。
          后來只好一步一步來,重新創(chuàng)建一個插件工程,把原來的源代碼全部拷過去,手工添加所有的擴展和擴展點項(累呵!)最后終于找到了兩個非常細小的差別。相比3.0版本的MENIFEST.MF,3.1版的增加了下面兩項:
          Bundle-ManifestVersion: 2

          Bundle-Localization:plugin。將這兩項加入MENIFEST.MF文件之后,錯誤解決了?。。?BR>o_Eclipse3.0-3.1-55.bmp
          究竟是哪一項導致上述錯誤呢?只去掉Bundle-ManifestVersion:2這一項后,發(fā)現(xiàn)錯誤重新出現(xiàn),而只去掉Bundle-Localization:plugin后,錯誤沒有出現(xiàn)。
          所以我們在遇到上述問題時,可以做如下操作:
          1.設(shè)置singleton:=true,如果仍然沒有解決問題:
          2.添加Bundle-ManifestVersion:2
          我就是這樣將錯誤修復的。但愿有類似經(jīng)歷的同胞不再受這個問題的困擾。
          但是,由于對OSGI以及Eclipse底層的機制不了解,所以不清楚為什么會出現(xiàn)上述問題,以及為什么增加此行后就不再報錯。希望各位了解的能夠指點迷津!



          posts - 21, comments - 74, trackbacks - 0, articles - 3

          Copyright © nemo

          主站蜘蛛池模板: 清河县| 静乐县| 恭城| 藁城市| 南召县| 双辽市| 饶平县| 庄浪县| 井研县| 肥东县| 宝清县| 抚州市| 宁城县| 准格尔旗| 荃湾区| 禄劝| 娱乐| 屏东市| 宜良县| 枣庄市| 崇信县| 湛江市| 玛纳斯县| 麻江县| 宁城县| 濉溪县| 荣昌县| 兴海县| 柏乡县| 河南省| 江门市| 遂宁市| 正安县| 墨江| 秦皇岛市| 肃北| 来宾市| 平塘县| 沂源县| 浑源县| 宣汉县|