代码如下:
public void restart(File file) {
try {
System.out.println("程序准备在5秒后重启,转入后台运行!");
Thread.sleep(5000);
// 用一条指定的命令去构造一个进程生成器
System.out.println("java home -- "
+ System.getProperty("java.home"));
String java = "java.exe";
if (!OsUtil.isOsWindows()) {
java = "java";
}
ProcessBuilder pb = new ProcessBuilder(
System.getProperty("java.home") + File.separator + "bin"
+ File.separator + java, "-DJAR_NAME=\""
+ file.getName() + "\"", "-jar", file.getName());
// 将这个进程的工作区空间改为X,相当于指定jvm的user.dir
// 这样的话,它就会去X目录下指定的jar文件
pb.directory(new File(new File(PROG_DIR).getAbsolutePath()));
// 得到进程生成器的环境 变量,这个变量我们可以改,
Process p = pb.start();
System.out.println("完成重启,已转入后台运行,本控制台将本结束!");
System.exit(0);
} catch (Exception e) {
e.printStackTrace();// 重启过程只能忽略异常。靠JRE的健壮性保证。
}
}
其中方法中的参数"file"为新的jar包名称