2014-09-24 32 views
0

我想在Pax考試中測試我的OSGI應用程序,但是我從一個插件啓動應用程序時遇到了一些麻煩。如何在Pax考試中啓動啓動參數的Equinox應用程序?

我使用Equinox,並有一些Equinox特定的類,它擴展了org.eclipse.equinox.app.IApplication。這個類可以在Eclipse Application Launcher中選擇,並且是運行的第一個類(在我的例子中它控制着應用程序的生命週期)。

當我運行Pax考試考試時,所有包都解決了,但是我的IApplication沒有啓動。

如何在Pax考試中運行這種應用程序?

此外,我怎樣才能傳遞一些應用參數?我只看到一些frameworkProperty(-F)和systemProperty(-D),但我需要一些常規的應用程序參數。

回答

0

據我所知,IApplication不是Equinox的一部分,而是eclipse平臺的一部分。所以我認爲它在pax考試中不直接支持。 Pax考試只會啓動OSGi框架並加載並啓動您指定的軟件包。

因此,這項工作的方式可能是加載eclipse包,負責應用程序的啓動。我不確定這將如何詳細工作。

使用eclipse特定的東西時,會使應用程序的可移植性降低。所以也許你可以用純粹的OSGi基礎架構實現同樣的目標?

或者您想要測試eclipse RCP應用程序的應用程序?在這種情況下,pax考試可能不是最好的考試設施。在這種情況下,一些UI測試框架會更好地匹配。 (例如https://developers.google.com/java-dev-tools/wintester/html/

+0

這是普通的非RCP應用程序。 – wajs 2014-09-24 07:52:00

+0

那麼你試圖通過使用IApplication來實現什麼?也許我可以建議一個替代品。 – 2014-09-24 07:55:20

+0

這是某種需求,我相信其原因是生成所有漂亮的Eclipse啓動器及其周圍。 – wajs 2014-09-24 08:09:00

0

IApplication是Equinox的一部分,並使用註冊表來查找安裝的內容。因此,除了在PAX中包含適當的jar之外,還需要確保至少啓動聲明式服務和擴展註冊中心捆綁包,否則將無法找到IApplication的東西。

其次,沒有調用EclipseStarter類的bundle,它是處理主參數並將其傳遞給運行時的類。所以除非你自己這樣做,否則你會發現應用程序根本無法運行。

如果你啓動Eclipse具體情況,你可能會發現一些特定的Eclipse的參數來指定這些作爲Java系統屬性:

http://help.eclipse.org/luna/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Freference%2Fmisc%2Fruntime-options.html

例如,您可以指定-Dapplication.id = yourapp

您也可以嘗試eclipse.commands作爲換行符分隔的參數列表。

+0

那麼我該如何使用這個EclipseStarter來自己運行我的應用程序呢? – wajs 2014-09-24 14:17:08

+0

從代碼中,您可以將其稱爲主要方法。請參閱http://stackoverflow.com/questions/4673406/programatically-start-osgi-equinox和/或我的Eclipse書籍;-) – AlBlue 2014-09-24 14:19:03

+0

但它是不是打開另一個osgi容器,在pax考試之外?因爲我看到它返回新的bundleContext。 – wajs 2014-09-24 14:24:08

相關問題