因此,唯一的解决方案是编写一个使用ProcessBuilder启动原始应用程序jar的包装器应用程序。
这方面的优点是链接可用于产生最小的所需运行时间。将jar放在bin目录中,然后使用FPM(https://github.com/jordansissel/fpm)创建安装程序。
包装器的示例代码
package xyz.arwhite.dslauncher;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class DrumScoreLauncher {
public static void main(String[] args) {
String installHome = System.getProperty("java.home");
String installBin = installHome + File.separator + "bin" + File.separator;
System.out.println("Launching Drum Score Editor from "+installHome);
List cmdLine = new ArrayList();
cmdLine.add(installBin + "java");
cmdLine.add("-jar");
cmdLine.add(installBin + "DrumScoreEditor.jar");
for ( int i = 0; i < args.length; i++ )
cmdLine.add(args[i]);
try {
ProcessBuilder p = new ProcessBuilder(cmdLine);
p.inheritIO();
p.start();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("Exiting launcher");
}
}