Javaのクラスパスにディレクトリ内のすべてのjarを含める

あるディレクトリ内のすべてのjarファイルをクラスパスに含める方法はありますか?

java -classpath lib/*.jar:. my.package.Program` を試しているのですが、これらのjarファイルに含まれるクラスファイルを見つけることができません。 それぞれのjarファイルを個別にクラスパスに追加する必要があるのでしょうか?

すべての.jarファイルを動的に指定する必要がある場合は、シェルスクリプトや[Apache Ant][1]を使うことができます。Commons Launcher][2]というコモンズプロジェクトがあり、基本的にスタートアップスクリプトをAntのビルドファイルとして指定することができます(意味はわかると思います)。

そうすると、次のように指定できます。


<path id="base.class.path">
    <pathelement path="${resources.dir}"/>
解説 (0)

それらをすべて個別に追加する必要があります。 また、どうしてもディレクトリを指定する必要がある場合は、すべてのファイルを1つのディレクトリにアンジャリングして、それをクラスパスに追加することもできます。 しかし、この方法は、クラスパスのバージョニングや管理のしにくさといった奇妙な問題が発生する可能性があるので、お勧めできません。

解説 (1)

jarファイルは、ディレクトリ構造のルートと考えてください。そう、全部別々に追加する必要があるのです。

解説 (0)