Eclipse升級到了3.1以後,在Plugin manifest editor上做了相當大的改動,可能是剛剛完全支援OSGi的緣故吧,感覺這個editor的小bug挺多的。比如很多情況下表示dirty的星號不會消失,有時會彈出帶紅叉的對話方塊等等,不過我相信在eclipse 3.2版本裡會得到解決,因為關於它的bug report已經不少了。
除了一些小bug以外,我發現在3.1裡匯出一個Plugin也變得有些“莫名其妙”,最近經過實驗摸索,得到以下一些心得:
1、開發plugin的時候,不要在project properties的java build path裡做任何修改,應該在plugin設定檔的dependencies、runtime和build這幾個部分添加。
2、在build頁上面部分,Library的預設情況是".",我發現有時候指定為"."會造成class不被輸出。比較保險的方法是指定一個.jar名字,對應的folder還是src/,勾中下面的Include selected library選項。
3、在build頁中間部分指定要輸出的檔案,一般除了預設的那些以外,還要包含如lib、icons、log4j.properties等目錄或檔案。
4、在build頁下面部分,也就是“Extra Classpath Entries”,指定你的應用程式用到的外部包,例如log4j.jar等等。
5、需要注意的是,如果Library裡指定了abc.jar,則輸出時會產生abc.jar這個檔案,但Plugin在運行時會報ClassNotFound異常,原因是你沒有把abc.jar指定到這個Plugin的classpath裡。解決的辦法是在Manifest.mf檔案的Bundle-ClassPath項裏手動加上abc.jar,例如“Bundle-ClassPath: abc.jar,lib/log4j-1.2.11.jar”這樣。
6、若你有兩個Plugin,多個的情況也一樣,假設B依賴A,那麼不僅在B的dependencies裡要加上A,還要保證A的Runtime頁裡export了B所需的所有包,也就是在A的Manifest.mf檔案裡指定正確的“Export-Package”項。
7、輸出為目錄或輸出為單個jar包在運行時沒有什麼區別,感覺jar包方便一些,輸出的jar包名就是項目名。
希望能有協助。