0

次のコマンドライン引数を持つスタンドアロンのヘッドレス RCP があります。

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

コマンド ライン ツールとして実行するバイナリを正常に生成できましたが、config.ini ファイルを変更する必要があるという問題があります。

osgi.bundles=org.eclipse.equinox.common@2:start,
org.eclipse.update.configurator@3:start,
org.eclipse.equinox.ds@2:start,
org.eclipse.core.runtime@s

osgi.bundles=org.eclipse.equinox.common@2:start,
org.eclipse.update.configurator@3:start,
org.eclipse.equinox.ds@3:start, <---
org.eclipse.core.runtime@s

この変更がないと、バイナリを実行したときにこれらのエラー メッセージが表示されました。

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)

「org.eclipse.equinox.ds@3:start」の背後にある魔法? 変更後にうまく機能するのはなぜですか? ヘッドレス RCP を作成するときに常に ini ファイルを手動で変更する必要がないように、Eclipse IDE でセットアップするにはどうすればよいですか。

4

1 に答える 1

2

この変更の背後にある魔法について説明することはできますが、残念ながら、Eclipse からアプリケーションをエクスポートする方法については詳しくありません。

osgi.bundlesどのバンドルが利用可能で、いつ (例えば、どの開始レベルで) バンドルを開始するかを定義するプロパティです。プラットフォームは、これらのバンドルをレベル 1、次に 2、というようにロードして開始osgi.startLevelします (デフォルトでは 6 で、上記のリンクの juno doc で説明されています)。

プラットフォームを開始するには、パッケージ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をロードすることをジョブとするバンドルであるため)。

于 2013-01-18T23:40:07.430 に答える