Eclipse 不只是 IDE,更是一個由微小核心 + 海量插件構成的豐富客戶端平台 (RCP)。本文為有 Java/SWT 基礎的開發者提供插件開發全景圖:架構認知、環境搭建、PDE 向導實戰、GEF/Draw2D 圖形化編輯器入門、部署發布。

| 層級 | 組件 | 核心作用 | 獨立使用 |
|---|---|---|---|
| 基礎圖形 | SWT (Standard Widget Toolkit) | 原生操作系統組件映射:Button, Table, Tree, Canvas... 替代 Swing | ✅ 可構建獨立桌面應用 |
| UI 框架 | JFace | Viewer/Provider 模式、對話框、向導、動作、資源管理器 | ✅ 依賴 SWT |
| 插件基礎設施 | PDE (Plugin Development Environment) | Manifest 管理、擴展點聲明、構建腳本、啟動配置 | ❌ 僅開發時 |
| Java 開發工具 | JDT (Java Development Tools) | AST 解析、重構引擎、編譯器、搜索引擎 | ✅ 程序化操作 Java 代碼 |
| 圖形化編輯 | Draw2D | 輕量級繪圖:Figure、Layout、Router、輸出 SVG/圖片 | ✅ 獨立繪圖庫 |
| 圖形化編輯框架 | GEF (Graphical Editing Framework) | MVC 控制器、編輯域、調色板、命令堆棧、拖拽、對齊 | ❌ 依賴 Draw2D+JFace |
Eclipse SDK (含 PDE),解壓至 C:\dev\eclipseGEF-SDK-3.x.zip 解壓到 Eclipse 根目錄 (合併 plugins/features)Help → Install New Software 添加 GEF 更新站點安裝Window → Preferences → Plug-in Development → Target Platform,確保包含 RCP/GEF 特性Window → Perspective → Open Perspective → Plug-in Development
File → New → Plug-in Project
Invokatroninvokatron.InvokatronPluginMulti-page Editor、New File Wizard、Property Pages
invokatron.editorInvokatronEditorInvokatronEditorContributorInvokatron Editorinvokatron
invokatron.wizardInvokatronWizardInvokatronWizardPageMyClass.invokatron
invokatron.propertiesInvokatronPropertyPageorg.eclipse.core.resources.IFile (針對文件顯示)Invokatron/
├── META-INF/
│ ├── MANIFEST.MF # OSGi 元數據:依賴、導出包、Activator
│ └── plugin.xml # 核心:擴展點聲明 (編輯器、向導、屬性頁、菜單)
├── build.properties # 構建輸出配置:源碼輸出、二進制輸出、額外資源
├── src/
│ ├── invokatron/
│ │ ├── InvokatronPlugin.java
│ │ ├── editor/
│ │ │ ├── InvokatronEditor.java # 繼承 MultiPageEditorPart
│ │ │ ├── InvokatronEditorContributor.java
│ │ │ └── pages/ # 文本頁、屬性頁、預覽頁
│ │ ├── wizard/
│ │ │ ├── InvokatronWizard.java # 繼承 Wizard
│ │ │ └── InvokatronWizardPage.java
│ │ └── properties/
│ │ └── InvokatronPropertyPage.java # 繼承 PropertyPage
│ └── sample.gif # 菜單圖標
└── plugin.xml (可視化編輯器同步編輯)
Overview 頁 → Launch an Eclipse Application (或 Debug)runtime-workbench-workspace)File → New → Other → Invokatron Wizard.invokatron 文件 → 自動打開三頁籤編輯器:文本編輯 / 屬性(字體) / 預覽
| 區塊 | 用途 | 典型內容 |
|---|---|---|
| Runtime Information | 運行時類路徑 JAR | bin.invokatron.jar (編譯輸出打包) |
| Source Build | 源碼構建輸入 | src/、META-INF/、plugin.xml、sample.gif |
| Binary Build | 導出產物包含文件 | sample.gif、plugin.xml、MANIFEST.MF、bin.invokatron.jar (勾選自動) |
| Exact Classpath Entries | 編譯期依賴 JAR | 第三方庫 JAR (需同時加入 Source Build) |
常見錯誤:在 Java Build Path 和 Exact Classpath 重複添加 JAR → 重複類定義。
MANIFEST.MF → Dependencies:聲明 Require-Bundle (如 org.eclipse.ui, org.eclipse.gef)plugin.xml → Extensions:貢獻功能點
org.eclipse.ui.editors → 編輯器關聯文件擴展名org.eclipse.ui.newWizards → 向導分類org.eclipse.ui.propertyPages → 屬性頁目標類型org.eclipse.ui.menus → 菜單/工具欄貢獻| 模式 | 產物 | 安裝方式 | 適用場景 |
|---|---|---|---|
| 目錄結構 | 展開的 plugins/features | 復制到 eclipse/dropins/ 或修改 links 文件 | 開發自測、內部分發 |
| 單個 ZIP | Invokatron-1.0.0.zip | 解壓到 Eclipse 根目錄 | 客戶交付、離線安裝 |
| 更新站點 | site.xml + JARs | Help → Install New Software → Add Site | 版本升級、在線安裝、P2 元數據 |
| 類別 | 代表示例 | 源碼位置 |
|---|---|---|
| SWT 基礎 | Browser, Controls, Layouts, Paint, OLE | org.eclipse.swt.examples.*_src.zip |
| Workbench/UI | Java Editor, Template Editor, Multi-page Editor, Property Sheet | org.eclipse.ui.examples.*_src.zip |
| GEF/Draw2D | Logic Diagram, Flow Diagram | org.eclipse.gef.examples.*_src.zip |
| JDT/Compare/Help/Team | Java Editor, XML Compare, CVS Sync | 對應 _src.zip |
Eclipse 插件開發學習曲線陡峭但回報豐厚:
plugin.xml 擴展點聲明式編程 (無需寫大量膠水代碼)Ctrl+Shift+T 定位源碼閱讀最快工欲善其事,必先利其器。Eclipse 給你最鋒利的工具箱,剩下的就是你的想像力。