0

OSGi 用のコマンド コンポーネントを作成し、Apache Felix Shell を使用しました。1 つのコマンドで、SWT UI を開始する新しいスレッドが開きます。

BND Config では、このコンポーネントをビルドして実行するために SWT バンドルが必要です。現在の問題は、すべての開発者が構成を変更し、OS の SWT バンドルを含める必要があることです。また、すべての OS に対して、他のパックされたバンドルが必要です。唯一の違いは、jar のマニフェスト内の行であり、他のバンドルを起動する必要があります。

現在実行中のシステムに依存するビルドまたは実行の依存関係を設定できる BND または OSGi にトリックはありますか?

「org.eclipse.swt.win32.win32.x86_64」ではなく「org.eclipse.swt.{OS}.{WS}.{ARCH}」のようなものですか? または、少なくとも構成で特定の OS を要求できますか? ユーザーが間違ったバンドルを使用した場合、ClassNotFound Exception の代わりに適切なエラーが表示されるようにするには?

別の質問 (http://stackoverflow.com/questions/2706222/create-cross-platform-java-swt-application/5784073#5784073) で説明されている解決策は、私にはうまくいきません。 BND/OSGi で実行できます。

何か案が?

4

2 に答える 2

1

bnd は include を使用できます。したがって、標準構成を作成し、これをプラットフォーム固有の bndrun ファイルに含めます。

 bnd.bnd:
 # standard set that uses macros for the places where specials need to be insered
 -runbundles: \
        ....
        ${platformdeps}

 windows.bndrun:
 -include bnd.bnd
 platformdeps = org.eclipse.swt.win.x86.jar

とにかく、bndtools を見てください。Neil Bartlett は、PDE なしで bndtools に bndtools をビルドします。そのため、彼はすべてのプラットフォーム用の bndrun ファイルを持っています。

${if ... } マクロまたは ${replace } マクロもあります。人々が海賊版をダウンロードする代わりに本にお金を払うなら...その小さな問題が解決されるまで、http://www.aqute.biz/Bnd/Bndを見てください

于 2012-12-14T16:38:21.660 に答える
0

Neil Bartlett の著書「OSGi in Practice」には、フラグメント バンドルに関するセクションがあり、オペレーティング システムに依存する構成について言及されています。(ただし、実際にそれを行う必要がなかったので、これが本当にあなたが探しているものかどうかはわかりません。)

本: http://njbartlett.name/osgibook.html

(これは本当にきれいな答えではありませんが、始めるには十分かもしれません。)

于 2012-07-05T14:54:25.840 に答える