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