???????? 搞了整整兩天才終于將項目從 Eclipse 中導了出來,網上雖然有許多可供參考的標準導出步驟,但對于具體的項目來說可能會因為版本的不同或者是插件的不同產生各種各樣的問題。下面是我在導出 RCP 程序過程中的一些心得,希望對大家 有些幫助。
- 有樣學樣法則真的是很重要,特別是當你無法馬上理解 Eclipse 內部機制的時候更是如此。自己一個人摸索很久還不如照著現成的去做更加有效率。可以在導出 RCP 項目時察看示例源碼 Hyperbola ,是一個聊天程序, Eclipse.Rich.Client.Platform.Designing.Coding.and.Packaging.Java.Applications 書中的示例。該書網上有 chm 版本的下載。源碼下載鏈接: http://eclipsercp.org/book/cd.php 。 注意:當出現錯誤時一定要照著源碼的配置一項一項的檢查,重點是檢查 .product 文件和 PDE 中 Build 項和 MENIFEST.MF 。許多時候一個非常細小的差別往往使程序導出失敗。
- 在發布 RCP 以及導出插件包時,其他相關的插件( Required Plugins )必須打包后加載進 Eclipse 插件中(可以采用 Link 方式),而不能作為 WorkSpace 中打開的項目加載在插件依賴項中,這樣才能順利將插件和 RCP 項目導出。或者不加載進 Eclipse 插件中,只要將其作為第三方插件,在 PDE 中 runtime 選項組添加該插件再打包。或者在 WorkSpace 該插件項目中新增加一個文件夾,在其中放入所依賴的插件項。然后在 PDE 中 Build 選項組二進制構建子選項組中將其包含也可。
- 在 PDE 中 Build 選項組中的運行時信息,默認名是一個“ . ”,意思是直接在 plugins 目錄下生成 jar 文件,如果給它起自己的名稱的話,將會根據那個名稱在 plugins 目錄下生成一個文件夾,然后在該文件夾里才會有自己的 jar 文件。在導出 Eclipse RCP 項目時,主插件應該保持默認名,使其生成的 jar 文件在 plugins 目錄下便存在,否則便會出現應用程序找不到的錯誤。
- MENIFEST.MF 里面的代碼跟最終的結果關系很大。下面把其中的格式復制出來,以便有一些參考性的東西。
?1
Manifest
-
Version:?
1.0
?2
Bundle
-
ManifestVersion:?
2
?3
Bundle
-
Name:?MyProject?Plug
-
in
?4
Bundle
-
SymbolicName:?MyProject;?singleton:
=
true
?5
Bundle
-
Version:?
1.0
.
0
?6
Bundle
-
Localization:?plugin
?7
Require
-
Bundle:?org.eclipse.ui,
?8
org.eclipse.core.runtime,
?9
org.eclipse.core.resources,
10
org.eclipse.ui.ide,
11
Eclipse
-
AutoStart:?
true
12
Export
-
Package:?myProject,
13
Bundle-Activator: myProject.MyProjectPlugin

?2

?3

?4

?5

?6

?7

?8

?9

10

11

12

13

?
?
其中,12行Export-Package項是你希望外部可見的包,寫不寫對導出項目沒有影響。
下面第13項在MENIFEST.MF中可能會自動生成,在導出插件時要注意將其去掉,否則會產生錯誤。(具體原因還未知,希望高人指點迷津