2012-02-14 24 views
4

私は(ApacheのServiceMixのに基づいて)FuseESBにジャージーサーブレットを配備しようとしていますが、私は次のエラーを取得する:解決2つの依存チェーン

Error executing command: Unable to resolve module com.temp.myappserver [248.4] because it is exposed to package 'javax.ws.rs' from org.apache.servicemix.specs.jsr311-api-1.1 [139.0] and com.sun.jersey.jersey-core [274.0] via two dependency chains. 

Chain 1: 
    com.temp.myappserver [248.4] 
    import: (&(package=javax.ws.rs)(version>=1.1.0)(!(version>=2.0.0))) 
    | 
    export: package=javax.ws.rs 
    org.apache.servicemix.specs.jsr311-api-1.1 [139.0] 

Chain 2: 
    com.temp.myappserver [248.4] 
    import: (package=com.sun.jersey.spi.container.servlet) 
    | 
    export: package=com.sun.jersey.spi.container.servlet; uses:=com.sun.jersey.server.impl.application 
    com.sun.jersey.jersey-servlet [267.0] 
    import: (package=com.sun.jersey.server.impl.application) 
    | 
    export: package=com.sun.jersey.server.impl.application; uses:=javax.ws.rs 
    com.sun.jersey.jersey-server [265.0] 
    import: (package=javax.ws.rs) 
    | 
    export: package=javax.ws.rs 
    com.sun.jersey.jersey-core [274.0] 

私はこのエラーを取得する理由を私は知っています - 確かにジャージーコアのjarマニフェストのエクスポートjavax.ws.rsとserviceMixは独自の実装に依存しています。解決する方法はありますか、私のサービスをCXFに変換する必要はありますか?

答えて

2

あなたは正しく、問題を分析した:com.sun.jersey.jersey-coreは(it should)、それをインポートしません、パッケージを提供する2つのバンドルがあるのでフェリックスは、この状況を解決することはできません、そしてあなた自身のバンドルは、特定のバージョンをインポートしたいです、 com.sun.jersey.jersey-coreが提供するバージョンとは異なります(そのバンドルはバージョンステートメントを提供しないため、デフォルトで0.0.0になります)。

あなたは何をすればよいですか?

  • バンドルは、残りのフレームワークに独自のバージョンを適用する代わりに、適切なインポートを提供するのが最善の解決策です。
  • これはしばらく時間がかかる可能性があるので、servicemixの代わりにフレームワークにjersey-coreバンドルに接続する機会を与えて、独自のインポートでバージョンステートメントを削除することができます。私はそれが理想的な状況ではないことを知っていますが、私たちができる最善の策だと思われます。

使用制限に関する一般的な注意事項は、Neil Bartlett's post on 'uses'を参照してください。

+0

Neilのポストへのリンクは死んでいます。私は恐れています。 –

+0

修正済み。日付の書式が変更されたもの。通知ありがとう! –

関連する問題