1

フォルダーにたくさんの jar があり、クラスパスのセットアップを合理化するために、新しい (Java 6 の) クラスパス ワイルドカード構文を使用しています。

CLASSPATH=":/$JARS/*"

これにより、$JARS ディレクトリ内のすべての jar が取得されます。ここまでは順調ですね。

ただし、そのディレクトリには、クラスパスに最初に表示する必要がある jar が 1 つあり、ワイルドカード構文のドキュメントでは、jar の順序は実装に依存し、信頼できないと述べています。

私が考えていたのは、ワイルドカードの前に、最初に明示的に表示する必要がある 1 つの jar を追加することでした。

CLASSPATH=":/$JARS/first.jar:/$JARS/*"

first.jarこれは、最初に明示的な参照、次にワイルドカードを使用して、クラスパスに 2 回表示されることを意味します。それは私に何か問題を引き起こすでしょうか?

はい、問題を回避するために別のディレクトリに入れることができることは知ってfirst.jarいますが、それを行うと、対処する必要のない多くの手間がかかるとだけ言っておきましょう (私はサードパーティ製品を扱っています)。 .

編集: jar を最初に表示する必要があります。これは、別の jar (サードパーティベンダーが提供する) で同じ名前の XML ファイルをオーバーライドする必要がある XML 構成ファイル (リソースとして読み込まれる) が含まれているためです。明確にするために、first.jar私の管理下にある唯一の瓶です。ディレクトリ内の他のすべての jar は、サード パーティ ベンダーによって提供されます。

4

2 に答える 2

5

はい、同じ jar/classes がクラスパスに複数回出現する可能性があります。jvm はそれらを順番に検索します。

この質問の詳細: JVM は異なるバージョンの重複した JAR をどのように処理しますか?

于 2012-05-09T14:12:10.057 に答える
0

いくつかの問題があります。JVMが正常に動作する場合もあれば、jarを認識しない場合もあります。クラスパスに1つのjarを含めることをお勧めします。

于 2012-05-09T14:10:24.853 に答える