`
darkma
  • 浏览: 527337 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类

ProcessBuilder实现Java应用程序自我重启

 
阅读更多

 

程序运行的过程中,我们可能需要更改一些配置,如果配置更改得很大的话,就可能会需要程序重新启动,但是JAVA并没有提供给我们直接的可以重启的方法.在这里我们将利用JDK1.5新增的ProcessBuilder来创建一个重启进程,然后自己的进程退出.

简单 代码如下:

import java.io.File;
import java.io.IOException;
import java.util.Map;

public class Test {

    
    public void restart() throws IOException{
        //用一条指定的命令去构造一个进程生成器
        ProcessBuilder pb=new ProcessBuilder("java","-Djava.ext.dirs={引用外部jar包的路径}",

        "-jar","Test.jar");
        //将这个进程的工作区空间改为F:\dist,相当于指定jvm的user.dir
        //这样的话,它就会去F:\dist目录下找Test.jar这个文件
        pb.directory(new File("F:\\dist"));
        //得到进程生成器的环境 变量,这个变量我们可以改,
        //改了以后也会反应到新起的进程里面去
        Map<String,String> map=pb.environment();
        Process p=pb.start();
        //然后就可以对p做自己想做的事情了
        //自己这个时候就可以退出了
        System.exit(0);
    }

    

    public static void main(String[] args) {

new Test().restart();

       }

}

 


在这里我们利用了ProcessBuilder这个类,这个类是一个进程的生成类,我们在起动一个进程之前可以设置好相关的一些参数,比如工作目录,环境变量等等,但是设置环境变的时候,有一个需要注意的地方就是你设置的环境变量不会改变系统原来的环境变量.也就是说即使你把path设为空,这个进程的运行的时候,依然是读取系统的path找到java这个命令,否则的话,你把path设为空,java命令是不可能找得到的.
一般来说ProcessBuilder这个类都是在万不得已的情况下才用的,因为用了它以后,程序很难保证可移植性,除非你在每个平台上都找到相应的命令执行相应的事情.

分享到:
评论

相关推荐

    使用JAVA调用应用程序.pdf

    使用 Java 调用应用程序可以实现数据交换,例如,将数据从一个应用程序传输到另一个应用程序。 3. 系统集成 使用 Java 调用应用程序可以实现系统集成,例如,将多个应用程序集成到一个系统中。 使用 Java 调用...

    java实现重启操作系统

    总结来说,Java实现重启操作系统是通过调用操作系统命令完成的,这需要对操作系统命令有深入理解,并且需要注意权限管理和异常处理。同时,这也是Java跨平台特性的体现,能够在不同操作系统环境下执行相同的功能。

    Java如何基于ProcessBuilder类调用外部程序

    Java如何基于ProcessBuilder类调用外部程序 Java中的ProcessBuilder类提供了一种方便的方式来调用外部程序。通过ProcessBuilder类,可以轻松地执行外部命令,并获取其输出结果。在本文中,我们将详细介绍如何使用...

    java程序控制windows关机重启

    下面将详细介绍如何使用Java实现这一目标。 首先,Java提供了`Runtime`类和`ProcessBuilder`类来执行操作系统命令。`Runtime.getRuntime().exec()`方法允许我们运行一个系统命令,而`ProcessBuilder`类提供了更灵活...

    java调用Windows应用程序

    在Java编程环境中,有时我们需要与操作系统进行交互,例如调用Windows上的特定应用程序,这通常是通过Java的`Runtime`类或`ProcessBuilder`类来实现的。下面将详细讲解这两个类如何帮助我们完成这一任务。 首先,`...

    java执行可执行文件,Runtime.exec、ProcessBuilder、commons-exec

    ### Java执行可执行文件的方法详解 在Java编程中,经常需要执行一些外部的可执行文件或者脚本(如bat或shell脚本)。本文将详细介绍三种常用的方法:`Runtime.exec()`、`ProcessBuilder`以及`commons-exec`库。 ##...

    java 关机小程序

    Runtime类是每个Java应用程序都有的默认实例,它允许应用程序与运行它的环境进行交互。而ProcessBuilder类提供了更灵活的方式来创建和控制子进程。 标题“java 关机小程序”表明我们将关注如何使用Java来执行系统的...

    java定时关机小程序

    Java定时关机小程序是一种利用Java编程语言实现的实用工具,它可以按照用户设定的时间自动关闭计算机。这个程序在日常生活中或企业环境中非常有用,比如在执行大量计算任务后自动关闭电脑,或者在无人值守时进行系统...

    ProcessBuilder非阻塞是调用

    ProcessBuilder 非阻塞是调用是指在 Java 中使用 ProcessBuilder 类来执行外部命令或程序时,如何实现非阻塞调用。 在 Java 中,使用 ProcessBuilder 类可以执行外部命令或程序,例如执行系统命令、运行可执行文件...

    java实现守护进程,有单独的监听进程, 两个或多个进程,两个或多个jvm

    总的来说,Java实现守护进程、监听进程以及管理多个进程和JVM涉及多线程、网络编程、进程间通信等多个方面,需要对Java的API有深入理解,并熟悉操作系统级别的进程管理。通过这种方式,我们可以构建出强大、灵活的...

    用JAVA调用外部程序并截出程序运行结果

    在Java编程中,有时我们需要与操作系统进行交互,执行一些外部程序并获取其运行结果。这通常通过使用Java的`Runtime`类或者`...在实际开发中,根据具体需求选择合适的方法,可以有效地扩展Java应用程序的功能。

    java swing开发的模仿windows记事本的应用程序

    Java Swing 是Java GUI(图形用户界面)库的一部分,它提供了丰富的组件和工具,用于构建桌面应用程序。在这个项目中,开发者使用Java Swing模仿了Windows操作系统中的记事本程序,实现了基本的文字编辑功能,并添加...

    java程序集合1.rar_java 画图_java程序_windows 程序 窗体_画图 java

    首先,Java中的“窗体”(Window)是用户界面的基础组件,它为应用程序提供了一个可视化的容器,用户可以在这个容器中与其他UI元素交互。Java Swing和JavaFX是两个常用的库,提供了创建窗体和各种GUI组件的功能。...

    java实现数据库容灾备份

    MySQL数据库提供了一个名为`mysql-connector-java`的驱动,它允许Java应用程序连接到MySQL服务器并执行SQL语句。因此,首先需要在项目中引入这个驱动依赖。 对于实时备份,我们可以创建一个监听数据库变更的系统,...

    java做的关机程序!

    描述中提到的“由于java的缺陷,即在没有JRE的环境下不能运行java exe文件”,实际上是指Java应用程序需要Java运行环境(Java Runtime Environment,JRE)才能执行。JRE包含了Java虚拟机(JVM)和Java类库,使得编译...

    java程序修改环境变量

    然而,如果你确实有此需求,可以借助于Java的`System`类和`ProcessBuilder`类来实现。 1. **通过`System.setProperty()`修改系统属性** Java中的`System`类提供了一个方法`setProperty(String key, String value)`...

    java定时开关机程序

    它以其“一次编写,到处运行”的特性而闻名,因为Java应用程序可以在任何支持Java虚拟机(JVM)的平台上运行。Java程序由类组成,这些类通过继承、封装和多态性等面向对象原则进行组织。 要实现定时任务,Java提供...

    exchange/powershell,Java调用powershell开通邮箱

    - **socket**:这可能意味着Java程序通过Socket通信与PowerShell进程交互,即Java应用程序通过打开一个网络套接字连接到本地PowerShell实例,然后发送命令并接收响应。 在压缩包文件"exchange-master"中,可能包含...

    Java语言编写的定时关机程序

    Java语言在编程领域有着广泛的应用,特别是在开发桌面应用和服务器端程序方面。在这个特定的案例中,我们讨论的是一个使用Java编写的定时关机程序。这个程序的主要目标是实现计算机在预设时间自动关闭的功能,这在...

    java程序实现网页截取

    本篇将详细介绍如何利用Java程序来实现网页截取,并探讨相关知识点。 首先,我们需要理解网页截取的基本原理。网页是由HTML、CSS和JavaScript等技术构建的,而屏幕截图则是将这些内容转化为静态图像的过程。在Java...

Global site tag (gtag.js) - Google Analytics