1

私はJavaの経験が豊富な学生ですが、Mavenはまったく初めてです。

jersey-serverとjersey-clientを使用してRESTfulサービスプロバイダーとクライアントを実装しようとしていました。どちらも、POJOとJSON間の自動変換を利用するためにjersey-jsonに依存しています。どちらも、POJO定義が存在する自分で実装したサービスモデルに依存しています。

ただし、コードは私には機能しません。私はインターネット上の至る所で解決策を探すのにかなりの時間を費やしました。失敗の理由は、誤ってjersey-serverとjersey-clientのバージョンを1.14と指定したのに対し、jersey-jsonを1.9.1と指定したためです。

サーバーは最初は機能しませんが、ある時点で突然機能し始めます。(これがどのように発生したかはわかりません。)jersey-jsonバージョンを1.14に変更するまで、クライアントは機能しませんでした。

これらの異なる依存関係に対して同じバージョンが必要なのはなぜですか?

4

2 に答える 2

2

一方が他方に依存しているか、そうでなければ互換性の問題があるためです。これが依存関係管理のすべてです。実行mvn dependency:treeして、これらのライブラリが互いにどのように関連しているかを正確に確認します。

この場合、Jerseyライブラリはすべて「バンドル」として一緒にリリースされているようです。これらのバンドルのバージョンを一緒に使用する必要があります。参照: http: //jersey.java.net/nonav/documentation/latest/chapter_deps.html

これはMavenではなく、Jerseyライブラリの属性であることに注意してください。

于 2012-09-21T17:01:14.793 に答える
1

多くの場合、同じディストリビューションの異なるjarが一緒にテストされ、同じバージョン番号が付けられます。

異なるバージョンを混合しようとすると、意図またはテストされた組み合わせではないため、機能する場合と機能しない場合があります。

于 2012-09-21T17:01:11.093 に答える