最近學習RCP,于是需要查看一些源碼。有些源碼在Eclipse3.0下一點問題都沒有,可是將Eclipse SDK更新到3.1后,好多源碼都報錯,無法運行。而且大多數是同一個錯誤。具體錯誤是在META-INF目錄下的MENIFEST.MF中出現的。如下圖所示:改了半天也不知道是什么方面的原因。把鼠標放在出錯提示處,發(fā)現有如下圖所示的提示:然后查找了大量資料,又用3.1版的Eclipse自動生成了MENIFEST.MF文件,看了一下開頭,比這個插件的開始處在Bundle-SymbolicName中多了這么一項:Bundle-SymbolicName:Test; singleton:=true那就將這句話加上吧!滿以為這次應該沒什么問題了,可誰知還是出錯。具體報的錯誤是這樣的:上面說聲明擴展或擴展點的插件必須將"singleton"屬性設置為"true",查了所有的擴展和擴展點項,都沒有發(fā)現提示中所說的singleton屬性,也就當然不知道如何設置為"true"了。后來只好一步一步來,重新創(chuàng)建一個插件工程,把原來的源代碼全部拷過去,手工添加所有的擴展和擴展點項(累呵!)最后終于找到了兩個非常細小的差別。相比3.0版本的MENIFEST.MF,3.1版的增加了下面兩項:Bundle-ManifestVersion: 2和Bundle-Localization:plugin。將這兩項加入MENIFEST.MF文件之后,錯誤解決了!!!究竟是哪一項導致上述錯誤呢?只去掉Bundle-ManifestVersion:2這一項后,發(fā)現錯誤重新出現,而只去掉Bundle-Localization:plugin后,錯誤沒有出現。所以我們在遇到上述問題時,可以做如下操作:1.設置singleton:=true,如果仍然沒有解決問題:2.添加Bundle-ManifestVersion:2我就是這樣將錯誤修復的。但愿有類似經歷的同胞不再受這個問題的困擾。但是,由于對OSGI以及Eclipse底層的機制不了解,所以不清楚為什么會出現上述問題,以及為什么增加此行后就不再報錯。希望各位了解的能夠指點迷津!
posts - 21, comments - 74, trackbacks - 0, articles - 3
Copyright © nemo