Eclipse 3.0 外掛程式移轉 FAQ

為什麼在 2.1 和 3.0 之間,Eclipse API 變更採用不相容的方式?

Eclipse 3.0 是 Eclipse 2.1 的發展。當維護整個版面的完善相容性時,在少數的區域中可能無法發展 Eclipse。不相容的主要來源有四個:

明確的不相容清單。

2.1 外掛程式在 Eclipse 3.0 中能運作嗎?

能,但少數情況除外。如果外掛程式只依賴 Eclipse 2.1 API,它就可以繼續在 3.0 中運作。API 中有少數例外,在 2.1 和3.0 之間的變更無法以任何相容的方式來完成;如果外掛程式用到它們,就會無法運作。

我的 2.1 外掛程式使用內部套件的類別。這在 Eclipse 3.0 中仍然有效嗎?

如果外掛程式會依賴 Eclipse 2.1 API 所沒有指定的內部類別或行為, 關於外掛程式能不能在 3.0 中運作,不可能提出任何概括性的說法。您必須嘗試。

我如何在不接觸它的情況下,在 Eclipse 3.0 中執行我的外掛程式?

請將您的 2.1 外掛程式安裝在基於 Eclipse 3.0 的產品的 eclipse/plugins/ 子目錄中,再重新啟動 Eclipse。Eclipse 會認得這個外掛程式是一個未轉換的 2.1 外掛程式(依據 plugin.xml 的標頭), 且會自動進行調整來補償平台外掛程式相依關係的變更及重新命名的平台延伸點的變更。

2.1 外掛程式必須變更,才能在 Eclipse 3.0 中適當編譯嗎?

是,所有情況都是如此。Eclipse 2.1 和 3.0 之間的某些差異會迫使所有外掛程式都必須變更。如果您有針對 2.1 來撰寫的外掛程式,且想要重新編譯它,您必須先將它移轉到 3.0,才能針對 3.0 來進一步開發它。

我如何將我的外掛程式移轉到 Eclipse 3.0?

您將外掛程式專案載入(或匯入)Eclipse 3.0 工作區之後,請利用 PDE 工具 > 移轉到 3.0(專案快速功能表), 將外掛程式的 Manifest 轉換成 3.0 格式,以及自動調整必要的平台外掛程式和重新命名的平台延伸點之參照的清單。在大部分情況下,這時應該能順利編譯和執行外掛程式的程式碼。之後,應該檢視外掛程式的程式碼來確定它不依賴任何不相容的 API 變更區域。

如果外掛程式依賴不相容地變更了的 API,我能夠相信它會有編譯錯誤或警告嗎?

不能。有些不相容變更的區域,Java 編譯器並不會將它們標示出來。

我可以放心因使用即將棄用的 API 而產生於程式碼中的警告嗎?

是,短期如此。在任何可能的情況下,作廢的 API 都會標示成即將棄用,而不是徹底刪除,它仍能繼續運作(不過,可能只是在有限的情況下)。雖然即將棄用的 API 通常不需急於拋棄,但這時將它視為已作廢,意謂著現在有更好的方法來執行某些動作。外掛程式應該儘早在方便之時,停止使用所有即將棄用的 API。

我將外掛程式移轉至 Eclipse 3.0 之後,仍可以在 Eclipse 2.1 中安裝和執行所產生的二進位外掛程式嗎?

不能。不支援這麼做,大概會無法運作,因為延伸點已重新命名。

org.eclipse.core.runtime.compatibility 的目的是什麼?

在 3.0 中移至 OSGi 型執行時期會使一些現有的核心執行時期 API 作廢。org.eclipse.core.runtime.* 套件中已作廢的 API 及其背後的實作, 已儘可能從 org.eclipse.core.runtime 外掛程式被移到新的 org.eclipse.core.runtime.compatibility 外掛程式。依預設,新建的外掛程式會依賴 org.eclipse.core.runtime,並預期只用並非即將棄用的執行時期 API。另一方面,依預設,從 2.1 移轉的現有外掛程式會依賴 org.eclipse.core.runtime.compatibility, 也可以使用舊的 API(org.eclipse.core.runtime.compatibility 外掛程式會重新匯出 org.eclipse.core.runtime 的 API)。雖然 org.eclipse.core.runtime.compatibility 外掛程式可能包括在 Eclipse IDE 配置中, 但它是不太可能包括在基於 RCP 配置的產品中的廢物。

org.eclipse.ui.workbench.compatibility 的目的是什麼?

org.eclipse.ui.workbench.compatibility 是一個外掛程式片段, 用來提供在 Eclipse 3.0 型產品中執行的 2.1 外掛程式之加強型二進位相容性。在 3.0 中,已從 org.eclipse.ui.IWorkbenchPage 介面中移走明確相依於 IFile 或 IMarker 的六個方法, 以便將工作台和工作區及資源清楚分開。org.eclipse.ui.workbench.compatibility 片段會安排重新加入這些方法,使現有的 2.1 外掛程式不需要修改就能執行。不過,請注意,移轉到 3.0 且會參照被移動的方法的外掛程式會見到編譯錯誤, 這些編譯錯誤(只)能夠藉由呼叫這時在 org.eclipse.ui.ide.IDE 中的取代方法來解決。

相關的 IWorkbenchPage 方法如下:openEditor(IFile)、openEditor(IFile, String)、openEditor(IFile, String, boolean)、openEditor(IMarker)、openEditor(IMarker, boolean) 和 openSystemEditor(IFile)。