あなたが言う時
子プロセスはserver/libディレクトリからクラスパスを取得します
これはあなたの管理下にあるプロセスですか?親プロセスがクラスパスを次のように指定する場合
server/lib/*
(つまり、リテラル*)次に、ターゲットjavaプロセスはディレクトリ自体のjarファイルを列挙します。libこれらはすべてクラスパスで名前を付ける必要はありません。
ただし、親プロセスが値server/lib/*.jarを作成するために明示的に列挙している場合は、JARが「実行可能」でない場合でも、JARマニフェスト内のが有効-cpになるという事実を利用できます。Class-Pathこのようなスタンザを使用して、マニフェストのみのJARファイルを作成できます。
<!-- location of your 300 dependency JAR files, file1.jar ... file300.jar -->
<property name="lib.dir" location="lib" />
<fileset id="dependencies" dir="${lib.dir}" includes="*.jar" />
<pathconvert property="manifest.classpath" dirsep="/" pathsep=" "
refid="dependencies">
<map from="${lib.dir}" to="myapp" />
</pathconvert>
<jar destfile="myapp-manifest.jar">
<manifest>
<attribute name="Class-Path" value="${manifest.classpath}" />
</manifest>
</jar>
myapp-manifest.jarこれにより、マニフェストに含まれるという名前のJARファイルが生成されます
Class-Path: myapp/file1.jar myapp/file2.jar ... myapp/file300.jar
このファイルをserver/lib新しいディレクトリに、300の依存関係を新しいディレクトリに配置しserver/lib/myappます。これで、生成-cpされたファイルには1つのファイル()のみが含まれますが、結果のJavaプロセスでは300個のJARファイルmyapp-manifest.jarがすべて使用可能になります。myapp