別のバンドルと依存関係を持つバンドルをエクスポート:は、私はこのOSGIの構成を有している
/configurations
config.ini
somebundle.properties
/plugins
bundleA
bundleB
osgi-3.4.2-R34x_v2008826-1230.jar
org.eclipse.equinox.common_3.4.0.v20080421-2006.jar
org.eclipse.update.configurator_3.2.201.R34x_v20080819.jar
com.test.arquitectura.osgi.ConfiguratorModule_1.0.0.jar
私のconfig.iniは、このようなものです:私は
java -Xms256M -Xmx1280M -jar osgi-3.4.2-R34x_v20080826-1230.jar
を実行すると、私の知る限り、そう
[email protected]:start, \
[email protected]:start, \
[email protected]:start
osgi.clean = true
eclipse.ignoreApp=true
osgi.parentClassLoader=app
equinox.commonとupdate.configuratorでconfig.iniを読み込むと、/ pluginsフォルダに展開されているすべてのバンドルを "検出"します。その後、ConfiguratorModule(カスタムバンドル)はコンテキスト内のすべてのバンドルを読み込み、それぞれのバンドルのstartメソッド(bundleAとbundleB)を実行します。私はbundleAとbundleBで定義されたいくつかのclasesを使用してEclipseプロジェクト(bundleC)を、持っているので、MANIFEST.MFがある:だから
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: BundleC Plug-in
Bundle-SymbolicName: com.test.bundlec
Bundle-Version: 1.0.0
Bundle-Activator: com.test.bundlec.Activator
Import-Package: javax.naming,javax.sql,org.osgi.framework;version="1.3
.0",org.osgi.util.tracker;version="1.3.1"
Bundle-ClassPath: .
Require-Bundle: com.test.BundleA;bundle-version="1.0.0",
com.test.BundleB;bundle-version="1.0.0"
、私はプラグイン(JAR)bundleCプロジェクト用のファイルを生成したいです。 "Require-bundle"オプションに2つのバンドルがあるので、それらのプロジェクト(BundleAとBundleB)はbundleCクラスパスになければなりませんか?その場合、バンドルを(「プラグイン開発」としてエクスポートして)生成し、新しいバンドルをプラグインフォルダに配置します。私は行方不明のものがありますか?
私が言ったことがすべて正しかった場合は、ここに私の問題があります。私はBundleAとBundleB用のプラグインjarファイルを持っていますが、ソースコードはありませんので、BundleCをjarプラグインにエクスポートするとエラーが発生します。なぜなら、明らかなように、必要なクラスを見つけることができないからですBundleAとBundleBからの使用。クラスパスに必要なバンドルがなくてもプラグインを生成する方法はありますか?
私はそれらを「逆コンパイル」してから、プロジェクトを作成してBundleCのクラスパスに追加しようとしました。私はプラグインを生成することができますし、それをプラグインフォルダに置きますが、osgi環境を実行するとbundleCは見つかりません。私は間違っているの? BundleAとBundleBから何かを使用するためには、あなたの答え
正確なエラー、スタックトレースなどを投稿してください。 – katsharp