2011-05-20 72 views
0

抽象地說,我的問題如下:我想從Java項目訪問包含在Eclipse插件中的類。可能嗎?我已將該類包含在插件的「導出包」中,該插件據說是「該插件公開給客戶的所有包」。我的Java項目能成爲「客戶端」還是其他插件可以成爲客戶端?無法從Java項目訪問Eclipse插件中的類

更具體地說,我在使用XText時遇到了這個問題。我爲一種語言構建了一個編輯器,用這種語言編寫的程序以基於文本的格式存儲,該格式遵循用XText定義的語法。

我希望我的用戶能夠編寫加載和操作這些基於xtext的文件的Java程序。爲此,他們需要訪問XText在插件項目中生成的所有類。但是,我還沒有能夠使用這些類:在使用我的編輯器運行插件的Eclipse實例中,這些類是不可見的。

我該如何訪問它們?我發現的唯一解決方案是將我的插件作爲jar導出,然後將其包含在Java項目的構建路徑中,在另一個Eclipse實例中,但這聽起來並不優雅。

查看此問題的另一種方法如下:我想要某個類可用於在某個插件已加載的Eclipse實例中構建的任何Java項目。我該怎麼做?

感謝您的幫助。

PS。我從第一個Eclipse實例中啓動第二個Eclipse實例(插件被加載的實例)。

回答

1

一旦你生成你的XTEXT支持,需要通過編輯MANIFEST.MF,以確保每包從運行標籤出口。

然後,一旦您將插件部署到eclipse中,該eclipse環境將能夠看到這些類。

但這隻會幫助其他插件開發人員。 Java應用程序可以看到類路徑中存在的類(例如,如果添加了插件jar),但由於大多數eclipse插件依賴於eclipse生命週期來運行,所以它們的java程序不可能運行。情況並非總是如此(您可以在沒有運行的Eclipse的情況下使用JFace),但僅限於專門爲此設計的插件。

如果您的插件已安裝,您可以創建一個java項目並使用* ECLIPSE_HOME *變量將插件jar作爲外部jar添加。如果您的插件是工作區中的項目,則可以像其他Java項目一樣依賴它(從java構建路徑)。但由於它是一個插件,可能無法幫助他們運行。