2011-07-11 4 views
1

JARファイル名のみを持つバンドルのマニフェストを読み込むことはできますが、インストールやアクティブ化はしません。インストールする前にバンドルのマニフェストを読むにはどうすればよいですか?

バンドルを動的にインストールする必要がありますが、異なるソースファイルを持っていても、同じ名前とバージョンのインストール済みバンドルをインストールしようとすると問題が発生します。

+0

一般的なコメント:開発中にこの種の問題が発生することがあります。しかし、デプロイメントの観点からは、これは決して起こらないはずです。 bundle.versionは、バンドルがまったく同じ実装を提供していることを示します。 –

答えて

2

JarFileを作成し、マニフェスト要素をJarFile.getManifestで読み取ってもよいですか?

+1

マニフェストファイルを簡単に読み取る方法があるかどうかはわかりませんでした。ありがとう、それは働いた! 私は実際にgetManifestメソッドと属性を使用しました。 – Allan

+0

私はそれをメモリから書きました。私はポストを更新しました。 – zacheusz

1

あなたの質問に直接答えるわけではありませんが、バージョン4.3では、に設定されている限り、シンボル名とバージョンが同じバンドルを複数インストールすることができます。私はそれを使用して直接の経験はありません、それは仕様を読んでいる間気づいたものです。

特に4.4.1バンドル識別子を参照してください。

+0

私はそれを使ってテストしました: FrameworkProperties.setProperty( "org.osgi.framework.bsnversion"、 "multiple"); それがうまくいった。しかし、アクセス警告が落ちていました。 FrameworkPropertiesを外部で使用しないでください。これを行うためのきれいな方法がありますか? – Allan

+0

(Eclipse?)OSGiランタイムはどのように起動していますか? 'FrameworkFactory.newFramework()'を使用している場合、プロパティは 'Map 'として渡されます。 –

+0

私はEclipseプラグインを開発しています。私はこのフレームワークが自動的にこのケースで定義されていると思いますよね? 私はBundleContextを使ってインストールを管理していますが、フレームワークに関連するものはFrameworkUtil.getBundleを呼び出すだけです。 – Allan