独自のデータベース システムへの接続に使用される、ソースのないサード パーティの jar があります。jar は実際には Eclipse プラグインだと思います。これは、そのシステムの Eclipse ベースのエディターの lib フォルダーの 1 つから取得されました。
とにかく、Netbeans 7.4 と Karaf 3.0.1 を使用して、この jar の機能を公開するバンドルを開発しようとしています。jar を Karaf にインストールしようとしてもうまくいきません。それを deploy フォルダーにドロップしても、OSGI バンドルとして認識されないため、リストにも表示されません。私は Netbeans で新しい OSGI Maven バンドルを作成し、依存関係として jar を追加し、すべてのシェーディングを試みましたがBundle-ClassPath
、Export-Package
運がありませんでした。ある時点で、私はそれが機能していると思っていましたが、Karaf はいくつかの Eclipse 要件が必要であると不満を漏らしていました。
私はさらに掘り下げて、jarファイルを解凍しました。サードパーティのjarファイルのマニフェストには次のものがあります。
Require-Bundle: org.eclipse.core.runtime
それで、私はそれらの依存関係を満たすといううさぎの穴から始めました。Maven ページに基づいて、この features.xml ファイルをまとめました。
<features xmlns="http://karaf.apache.org/xmlns/features/v1.0.0">
<feature name='custom_deps' version='1.0'>
<bundle>mvn:org.eclipse.equinox/log/1.0.100-v20070226</bundle>
<bundle>mvn:org.eclipse/osgi/3.5.0.v20090520</bundle>
<bundle>mvn:org.eclipse.core/contenttype/3.2.100-v20070319</bundle>
<bundle>mvn:org.eclipse.core/jobs/3.3.0-v20070423</bundle>
<bundle>mvn:org.eclipse.core.runtime.compatibility/auth/3.2.100-v20070502</bundle>
<bundle>mvn:org.eclipse.equinox/app/1.3.100-v20130327-1442</bundle>
<bundle>mvn:org.eclipse.equinox/common/3.6.200-v20130402-1505</bundle>
<bundle>mvn:org.eclipse.equinox/preferences/3.5.100-v20130422-1538</bundle>
<bundle>mvn:org.eclipse.equinox/registry/3.5.301-v20130717-1549</bundle>
<bundle>mvn:org.eclipse.core/runtime/3.3.100-v20070530</bundle>
</feature>
</features>
インストールしようとすると、次のようになります。
karaf@root()> feature:install custom_deps
Error executing command: Could not start bundle mvn:org.eclipse/osgi/3.5.0.v2009
0520 in feature(s) custom_deps-1.0: Activator start error in bundle org.eclips
e.osgi [256].
分点対フェリックスと関係があると思いますか? 私はデフォルトの Karaf セットアップを使用し、組み込みの Netbeans Maven プロジェクトを使用してバンドルを作成しているだけで、OSGI の世界ではまだ比較的新しいものです。ほとんどの場合、バンドルを起動して実行し、アプリの基本的なコレクションをまとめることができますが、この 1 つのバンドルはこのライブラリを使用できるかどうかに依存しており、それを機能させる方法を見つけるのに苦労しています. jar のリンクされたすべての依存関係を解決する方法があるかどうか、またはEclipse に依存しているものを何らかの方法で削除する方法があるかどうか疑問に思っていますか? 私が探している接続に必要のないのはプラグイン関連の部品だけなのだろうかと思っています。
アイデアをありがとう。
編集:サードパーティのjarに関する詳細情報を追加
jar はベンダー提供ですが、現在は廃止されたベンダーからのものです。ベンダーの詳細を教えてよいかどうかわからないので、ここでは特定の会社情報をマスクします。したがって、jar の名前は「com.bigcompany.product.productbeans_4.3.1.jar」になります。jar の完全なマニフェストは次のようになります。
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Productbeans Plug-in
Bundle-SymbolicName: com.bigcompany.product.productbeans
Bundle-Version: 4.3.1
Bundle-Activator: com.bigcompany.product.productbeans.ProductbeansPlugin
Bundle-Vendor: BIGCOMPANY
Bundle-Localization: plugin
Require-Bundle: org.eclipse.core.runtime
Eclipse-AutoStart: true
Export-Package: com.bigcompany.product.productbeans
Karaf での Equinox への切り替えは比較的簡単でしたが、jar を Karaf にドロップしてもリストには表示されませんでした。jar を解凍し、マニフェストを変更して Require-Bundle と Eclipse-Autostart の行を削除し、再パックしてインストールを試みました。 bigcompany.product.productbeans'.
そこから、サードパーティのパッケージをインポートしようとするバンドルを再デプロイしようとしましたが、上記の機能ファイルをインストールしようとすると、制約の欠落について不平を言っています-機能ファイルにバンドルの必要な順序はありますか?
最終的に私が望んでいるのは、それらを必要とするバンドルにjar(または含まれている.classファイル?)を埋め込むか含める信頼できる方法があり、それを機能させることだと思いますか?Embed-Dependency、Bundle-Classpath (構文や場所が正しいかどうかはわかりませんが)、Maven シェード プラグインを使用して試してみましたが、バンドルにサード パーティのパッケージがないと書かれている場所にたどり着きました。 、または、Eclipse の依存関係が見つからないというメッセージが表示されない場合。OSGI 以外のプロジェクトがある場合、maven の依存関係には、Eclipse 関連の依存関係がリストされていないか、含まれていません。必要に応じて、POM のスニペットなどを含めることができます。