bugfix> java > 投稿

OSGI/Karafエコシステムを使用しています。最初は、同じjarを2つの異なるバンドルに埋め込みました。 2つのバンドルがこの組み込みjarのクラスを利用してデータを共有しているという事実により、クラスキャストの例外が発生しています。これは、同じjarの2つの異なるインスタンスが埋め込まれているという事実によるものと想定しています。 ( Classloader 問題?)。

私の考えは、これをコンテナにインストールして、バンドルに使用させることです。 2つの問題があります。1つはこのjarがバンドルではないこと、2つ目の問題は..このjarのサービスミックスバージョンを見つけて、次のエラーが表示されることです。

org.osgi.framework.BundleException: No native code clauses found in the value of Bundle-NativeCode: *

回答 1 件
  • まず、2つのバンドルが同じ「依存関係」を使用する場合、jarを埋め込む代わりにImport-Packageを介してそれらの依存関係を宣言します。 次に、バンドルのリストを一度にインストールする場合は、Apache Karafが提供する機能を使用します。 こちらのドキュメント、または簡単な例をご覧ください。

    <feature name="my-project" version="1.0.0">
      <feature>other</feature>
      <bundle start-level="80" start="false">mvn:com.mycompany.myproject/myproject-dao</bundle>
      <bundle start-level="85" start="false">mvn:com.mycompany.myproject/myproject-service</bundle>
    </feature>
    
    

    別の方法は、次の方法で依存関係バンドル自体をインストールすることです。

    bundle:install mvn:com.mycompany.myproject/myproject-dao
    
    

あなたの答え