使用しているすべてのjarファイルのパスを含める必要があるため、CLASSPATHが完全に台無しになるほど多くのサードパーティライブラリ(jarファイル)を使用しています。
Wildcard(*)演算子(* .jarなど)を使用して、フォルダーにすべてのjarファイルを含める方法があるかどうか疑問に思っていました。しかし、機能していないようです。私のPCで現在エッセイのように見えるCLASSPATHを短縮できる他の方法はありますか?.
From: 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ファイルでこれを行うのは難しいでしょう...
CLASSPATHという名前の環境変数があることを意味する場合、それはあなたの間違いだと思います。私がJavaを開発するマシンにはそのようなものはありません。 CLASSPATHは特定のプロジェクトと密接に結びついているため、すべてで機能する単一の正しいCLASSPATHを持つことは不可能です。
IDEまたはAntを使用して各プロジェクトのCLASSPATHを設定します。多くのWeb開発を行うため、各WARおよびEARは独自のCLASSPATHを使用します。
IDEおよびアプリサーバーでは無視されます。なぜあなたはそれを持っていますか?削除することをお勧めします。