JVM のパラメーターを渡すために、実行可能な .jar ファイルのラッパーを作成しようとしています。私のラッパーの関連コードは次のとおりです。
public static void main(String[] args) throws IOException
String[] cmdArray = {"java",
System.getProperty("os.arch").contains("64") ? "-d64" : "",
"-XX:+AggressiveHeap",
"-jar",
"/lib/A.jar" //replace with jar name
};
Runtime.getRuntime().exec(cmdArray);
}
A.jar ファイルは、Wrapper プロジェクトで参照されているライブラリ (ビルド パスとクラス パスに追加) です。例:
Wrap
>src
>org
>Wrapper.java
>lib
>A.jar
Wrapper プロジェクト (B.jar と呼びましょう) から 2 つ目の jar ファイルを作成すると、その内容は次のようになります。
lib
>A.jar
org
>eclipse
>jdt
>... (i.e., all the files for the jarinjarloader)
>Wrapper.class
META-INF
>MANIFEST.MF
2 番目の jar のマニフェスト ファイルは次のようになります。
Manifest-Version: 1.0
Rsrc-Class-Path: lib/A.jar
Class-Path: .
Rsrc-Main-Class: org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader
Main-Class: org.Wrapper
B.jar ファイルを起動すると、プロセスが開始されたことが示されますが、A.jar ファイルは呼び出されず、起動されません。エラーも例外もありません。プロセスが開始および終了します。コマンドラインから起動して、ダブルクリックも試みました。
MANIFEST.MF ファイルを次のように変更すると、
Rsrc-Class-Path: A.jar
からのWrapper.javaのメインメソッドのcmdArrayからの要素
"/lib/A.jar" to "A.jar"
ラッパー jar が存在するフォルダー (例: B.jar) に A.jar のコピーを作成すると、完全に起動し、2 番目の jar が呼び出されます。私は何を間違っていますか?クラスパスを内部jarファイルに渡すにはどうすればよいですか? どんな助けでも大歓迎です。