利用ProcessBuilder在运行时更新程序

来源:互联网 发布:淘宝母婴类目有哪些 编辑:程序博客网 时间:2024/06/16 09:59

代码如下:

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包名称

0 0
原创粉丝点击