2016-04-05 3 views
9

私はJavaライブラリmodel.jarの2つのバージョンを持っています。それぞれは同じクラスのセットを持ちますが(実装は異なります)私はあるクラスからいくつかのクラスをインポートし、他のバージョンからいくつかのクラスをインポートするJavaクラスを作成したいと思います。Javaでどのクラスをインポートするかをどのように選択するのですか?

私は、私は彼らに別の名前を与えることによって、両方のコンパイルに含めることができます知っている:

javac -cp model.jar;model2.jar MyClass.java 

しかし、どの import文は私がクラスパスに指定した最初の.jarファイルから対応するクラスをインポートします。

importステートメントでインポートするライブラリを指定できますか?ライブラリ構造は両方のファイルで同じになるとしますか?

+0

これは良い質問です。一方、クラス名を含むファイルへのパスは、それが何のために意図されているのか、それが何のために使われるべきかを明確にするべきです。なぜあなたは同じパス/クラス名を持つ2つのクラスを持っていますか? – Stultuske

+0

答えはありませんが、これは悪い習慣のようです。 (@Stultuske OPには同じライブラリの2つの異なるバージョンがあります) – Apolo

+0

AFAIKこれは単純にできません。 –

答えて

2

クラスが同じ名前(パッケージを含む)を持つ場合、別のクラスローダーを使用しない限り、チャンスはありません。 Javaは常に、クラスパス上で見つかった最初に一致するクラスを使用します。

また、異なるライブラリで同じライブラリを使用すると、問題が発生することがあります。あなたは本当に別の方法でこれを解決しようとするべきです。

1

あなたはこれが好きではありません。

あなたができる唯一のことは、あなたがしたいクラスを2から1つのjarを生成するスクリプトを使用することで、クラスパスに

3

をそのjarファイルを置くことは、少なくとも、うまく実際に(可能ではありません単にそれではない)。

達成しようとする内容に応じて、実際にライブラリの2つのバージョンを使用する必要がある場合は、OSGi,Jboss-Modulesなどのモジュールシステムを試すことができます。

関連する問題