2013-01-18 36 views
0

我有一個獨立的無頭RCP與以下命令行參數。「[email protected]:start」背後的魔力?

Command-line arguments: -os macosx -ws cocoa -arch x86_64 -clean -consoleLog 

我能成功地生成二進制來運行一個命令行工具,但問題是,我必須從

[email protected]:start, 
[email protected]:start, 
[email protected]:start, 
[email protected] 

修改config.ini文件,以

[email protected]:start, 
[email protected]:start, 
[email protected]:start, <--- 
[email protected] 

沒有這個改變,當我執行二進制文件時,我得到了這些錯誤信息。

org.osgi.framework.BundleException: The bundle "org.eclipse.equinox.ds_1.4.0.v20120522-1841 [3]" could not be resolved. Reason: Missing Constraint: Import-Package: org.eclipse.equinox.internal.util.event; version="1.0.0" 
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.getResolverError(AbstractBundle.java:1332) 
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.getResolutionFailureException(AbstractBundle.java:1316) 
    at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:323) 

[email protected]:start」背後的魔力?改變後爲什麼它運作良好?我如何在eclipse IDE中進行設置,以便在創建無頭RCP時不必手動更改ini文件。

回答

2

我可以解釋更改背後的魔力,但不幸的是我不熟悉從Eclipse導出應用程序。

osgi.bundles是一個屬性,它定義了什麼捆綁包可用以及何時(例如在什麼start level)他們應該開始。該平臺加載並啓動1級和2級的捆綁包,依此類推,直到osgi.startLevel(缺省值爲6,在上面鏈接的juno文檔中描述)。

爲了啓動org.eclipse.equinox.ds,平臺需要加載一個導出版本號爲1.0.0的org.eclipse.equinox.internal.util.event包的軟件包。從一些搜索這似乎是org.eclipse.equinox.util捆綁。

因此,通過將@ 2更改爲@ 3,您將啓動ds軟件包,以便稍後在平臺啓動時將其加載到util軟件包加載後的某個點。我懷疑這裏有什麼幫助是org.eclipse.update.configurator包(因爲它是一個包,其工作是load all the bundles from the plugins directory)。