1

OSGi プロジェクト (いくつかのバンドルで構成される) を単一の実行可能ファイル (.exe ファイルなど) に保存して、JVM を備えた任意の PC にコピーして実行することはできますか? 通常の方法は、コマンド プロンプトを開き、必要な bundles/jar ファイルを 1 つずつインストールすることです。しかし、私のプロジェクトにはかなりの数のバンドルが含まれているため、その方法は面倒に思えます。

事前にサンクス。

4

5 に答える 5

2

.exe のような単一の「ネイティブに実行可能な」アーカイブに到達しなくても、バンドルを 1 つずつインストールするよりも確実にうまくいくことができます。zip アーカイブとして出荷される商用およびオープン ソースの OSGi アプリケーションは多数あります。ユーザーはアーカイブを解凍しjava -jar some.osgi.jar、シェル スクリプトを呼び出すか実行します。

OSGi ランタイムがどのバンドルをインストールするかを判断する方法はいくつかあります。OSGi フレームワーク (Equinox や Felix など) に固有のものもあれば、より一般的なものもあります。Equinox を使用している場合は、ファイルを作成して、OSGi jar と同じレベルconfig.iniと呼ばれるフォルダーに配置できます。configurationプロパティで開始するバンドルを一覧表示しosgi.bundlesます。config.ini ファイルには、開始するすべてのバンドルと、必要なその他の構成プロパティを一覧表示できます。

Eclipse では、config.ini で最小限のバンドル セットを定義し、コンフィギュレーターを使用して plugins フォルダー内のすべてを開始することもできます。同様に、Felix を使用している場合、auto-deploy ディレクトリ内のすべてのバンドルが自動的に開始されます。Felix File Install を見ることもできます。これにより、バンドルを監視対象フォルダーにドロップしてインストールできます (FileInstall 自体がインストールされた後)。名前にもかかわらず、FileInstall は Equinox と Felix の両方で動作します。

于 2012-05-18T19:50:49.957 に答える
2

これは、Felix と Maven を使用して完全な OSGi アプリケーションを作成するのと似ています。Sling Launchpad プラグインを使用して、特定のバンドル セットを含む実行可能な jar ファイルまたは war ファイルを作成できます。Maven をまだ使用していない場合は、「プロジェクトを実行可能ファイルに保存する」ほど単純ではありませんが、jar ファイル生成メカニズムを環境に適応させることができるでしょう。

于 2012-05-21T08:13:32.077 に答える
0

ありがとう。上記の回答に続いて、この本の第 9 章に出会いました。 http://my.safaribooksonline.com/9780321561510/ch09#ch09 製品構成を通じてプロジェクトをエクスポートするためのウォークスルー チュートリアルがありました。まさに私が必要としていたものです。:)

于 2012-05-19T13:14:03.080 に答える
0

Eclipse には製品の概念があります。既存のバンドルから製品を作成すると、製品を実行可能ファイルとしてエクスポートできます。製品の詳細については、http://www.vogella.com/articles/EclipseRCP/article.html の Eclipse RCP チュートリアルを参照してください。

チュートリアルでは Eclipse RCP アプリケーションを紹介しますが、そこからすべてを学ぶ必要はありません。Eclipse アプリケーション全体を作成しなくても製品を作成することは可能です。

OSGi ランタイムとして Eclipse Equinox に多かれ少なかれ縛られているため、これにより選択肢が制限されますが、そこから実行可能な製品を作成することは、実行可能なトレードオフになる可能性があります。

于 2012-05-18T18:28:52.657 に答える
0

bnd(tools) を使用する場合、bndtools GUI から、または bnd コマンドライン (bnd パッケージ xyz.bndrun; java -jar xyz.jar) を介して、プロジェクトを実行可能 jar にエクスポートできます。結果の jar ファイルには、すべてのバンドル、ランチャー、およびフレームワークが含まれています。

于 2013-05-20T07:34:42.470 に答える