私は非常に多くのサードパーティ ライブラリ (jar ファイル) を使用しており、使用するすべての jar ファイルのパスを含める必要があるため、CLASSPATH が完全に台無しになっています。
ワイルドカード (*) 演算子 (*.jar など) を使用して、すべての jar ファイルをフォルダーに含める方法があるかどうか疑問に思っていました。しかし、それは機能していないようです。現在エッセイのように見える CLASSPATH を短縮できる他の方法はありますか ;) 私の PC で?.
出典: http://java.sun.com/javase/6/docs/technotes/tools/windows/classpath.html
クラス パス エントリには、ベース名のワイルドカード文字 を含めることができます
*。これは、拡張子 .jar または .JAR を持つディレクトリ内のすべてのファイルのリストを指定することと同等と見なされます。たとえば、クラス パス エントリfoo/*は、foo という名前のディレクトリ内のすべての JAR ファイルを指定します。だけで構成されるクラスパス エントリ*は、現在のディレクトリ内のすべての jar ファイルのリストに展開されます。
これはJava6で動作するはずですが、Java5については不明です
(期待どおりに動作しない場合は、引用符を付けてみてください。例: "foo/*")
これはWindowsで動作します:
java -cp "lib/*" %MAINCLASS%
もちろん、ここ%MAINCLASS%でメインメソッドを含むクラスです。
または:
java -cp "lib/*" -jar %MAINJAR%
%MAINJAR%内部マニフェストを介して起動するjarファイルはどこにありますか。
ベースネームのワイルドカードは Java 6 で導入されました。つまり、「foo/*」は「foo」ディレクトリ内のすべての「.jar」ファイルを意味します。
ワイルドカード クラスパスをサポートしていない以前のバージョンの Java では、シェル ラッパー スクリプトを使用して、パターンを「グロビング」し、結果をマングリングして適切なポイントに「:」文字を挿入することにより、クラスパスを組み立てていました。これをBATファイルで行うのは難しいでしょう...