2017-11-17 17 views
1

私はJersey HTTPクライアントパッケージを使用しているあらゆる種類のJavaライブラリを読んでいますが、Jersey 2.xを使用しているため注意が必要です。クラスパスにJersey 1.xがあると、紛争。Jersey 2.xとJersey 1.xが競合するのはなぜですか?

しかし、Jerseyプロジェクトはバージョン2.xからGlassfishプロジェクトに組み込まれたときに、グループIDとパッケージ名を変更しました。

パッケージ名が異なるため、どのような矛盾がありますか? Jersey 2.xがGlassfish Runtimeによって提供されているため、Jersey 1.xが配備可能な場合、それらのクラスが使用されます。名前が異なる全く異なるクラスです。

同様に、Jersey 1.xが私の展開環境にあり、いくつかの依存関係があり、Jersey 2.xが追加されている場合、唯一の問題は次のとおりです。提供されたライブラリではなく、ライブラリです。しかし、いずれにしても、Jersey 1.xと2.xがクラスパスにあるので問題はありません。

私に何か不足していますか?何が大騒ぎ?

+1

バージョン2のクラスxがバージョン1の同じメソッドの改良バージョンを持っているとしましょう...コンパイラはどちらを使いたいのですか?彼らのパスは同じで、クラス名も署名も同じです – Stultuske

+0

ジャージーはパッケージ名を2.xで完全に変更しました。それが少なくとも私の研究の後で見つけたものです。だから、どのような葛藤、彼らは異なるクラスです。 – amihaiemil

+0

いつでも同じパッケージの異なるバージョンをロードすると、クラッシュする危険性があります – Stultuske

答えて

0

はい、すべきです!

あなたのプロジェクトがあなたのコントロールから外れている依存関係で接続されている場合、常にtwiseを考えてください。

あなたは1から2に言及しましたが、sun名前空間からglassfish名前空間に移動しました。

また、1.xではJEE6バージョンのJAX-RSを使用し、2.xではJEE7バージョンのJAX-RSを使用します。これは大きな問題です。例えば、異なるバージョンのジャージーで使用されるjavax.ws.rs.core.Applicationは異なっており、同じ方法で使用することはできません。

Jesey 2.xはJEE 7を使用します。 JEEにjavax.ws.rs.core.Applicationの7バージョンは、定義された

Jesey 1.xのは、JEE 6を使用しています。 JEEでjavax.ws.rs.core.Applicationの6版のみ

  • getClasses()
  • getclass()

しかしgetProperties()を持って定義されていません。 https://jersey.github.io/apidocs/1.19.1/jersey/javax/ws/rs/core/Application.html のようなエラーにつながる可能性がありますNoSuchMethodErrorhttps://docs.oracle.com/javase/7/docs/api/java/lang/NoSuchMethodError.html これは単なる1つの不適格です。もしあなたなら、もっと深く掘り下げてください。

名前空間だけでなく、基本となる実装ではログが変更されています。はいglassfishランタイムにはジャージがロードされています。しかし、を指定してのスコープの異なるアーティファクト名を指定すると、矛盾が生じる可能性があるため、問題が発生する可能性があります。

関連する問題