3

(明確にするために編集)

私の(OSGi以外の)アプリケーションビルドはGradleにあり、非常に古いバージョンのJersey(1.1.4.1)からもっと新しいバージョン(1.12?)にアップグレードしようとしています。私はOSGiの使用について何も知らないふりをしません。しかし、Gradleの依存関係($JERSEY_VERSION「1.12」に設定)をポイントすると、次のようになります。

[group: 'com.sun.jersey', name: 'jersey-server', version: "$JERSEY_VERSION"]

jersey-server-1.12.jarを通常の「jars」ディレクトリではなく「bundles」ディレクトリの下のGradle依存関係キャッシュにダウンロードすると、Gradleはこのjarをクラスパスに含めないようです。代わりに「jars」サブディレクトリ。

POMでOSGi対応のjarとしてラベル付けされているため、「バンドル」の下にあることがわかりました。プロジェクトをOSGi化するつもりはないと思います。古いバージョンのJerseyに固執していますか、それともGradleにJersey jarを表示させるために他にできることはありますか?可能であれば、ファイルをローカルリポジトリに手動でコピーするのではなく、タスクに応じてGradleの依存関係管理機能に依存することをお勧めします

4

2 に答える 2

0

'これはばかげた見落としでした。1.1.4.1から1.12に移行すると、POMの依存関係が変更され、jersey-core.jarが暗黙的に取り込まれなくなりました。jersey-core.jarを明示的に追加する必要がありました。問題はjersey-server.jarがバンドルとしてインポートされているという事実だと思っていましたが、実際にはjersey-core.jarにあるクラスのClassNotFoundExceptionが発生していました。

于 2012-06-25T16:00:40.287 に答える
0

OSGiバンドルは、追加のマニフェストエントリを持つ通常のjarです。他の依存関係と同じように、OSGi以外のプロジェクトでそれらを使用できるはずです。それらがキャッシュのbundlesディレクトリに配置されるのは問題ですか?

于 2012-05-14T19:53:30.353 に答える