簡(jiǎn)單 代碼如下:
/*
* Test3.java
*
* Created on 2007-9-27, 11:46:31
*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package test2;
import java.io.File;
import java.io.IOException;
import java.util.Map;
/**
*
* @author hadeslee
*/
public class Test3 {
public static void restart() throws IOException{
//用一條指定的命令去構(gòu)造一個(gè)進(jìn)程生成器
ProcessBuilder pb=new ProcessBuilder("java","-jar","Test3.jar");
//讓這個(gè)進(jìn)程的工作區(qū)空間改為F:\dist
//這樣的話,它就會(huì)去F:\dist目錄下找Test.jar這個(gè)文件
pb.directory(new File("F:\\dist"));
//得到進(jìn)程生成器的環(huán)境 變量,這個(gè)變量我們可以改,
//改了以后也會(huì)反應(yīng)到新起的進(jìn)程里面去
Map<String,String> map=pb.environment();
Process p=pb.start();
//然后就可以對(duì)p做自己想做的事情了
//自己這個(gè)時(shí)候就可以退出了
System.exit(0);
}
}
* Test3.java
*
* Created on 2007-9-27, 11:46:31
*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package test2;
import java.io.File;
import java.io.IOException;
import java.util.Map;
/**
*
* @author hadeslee
*/
public class Test3 {
public static void restart() throws IOException{
//用一條指定的命令去構(gòu)造一個(gè)進(jìn)程生成器
ProcessBuilder pb=new ProcessBuilder("java","-jar","Test3.jar");
//讓這個(gè)進(jìn)程的工作區(qū)空間改為F:\dist
//這樣的話,它就會(huì)去F:\dist目錄下找Test.jar這個(gè)文件
pb.directory(new File("F:\\dist"));
//得到進(jìn)程生成器的環(huán)境 變量,這個(gè)變量我們可以改,
//改了以后也會(huì)反應(yīng)到新起的進(jìn)程里面去
Map<String,String> map=pb.environment();
Process p=pb.start();
//然后就可以對(duì)p做自己想做的事情了
//自己這個(gè)時(shí)候就可以退出了
System.exit(0);
}
}
在這里我們利用了ProcessBuilder這個(gè)類,這個(gè)類是一個(gè)進(jìn)程的生成類,我們?cè)谄饎?dòng)一個(gè)進(jìn)程之前可以設(shè)置好相關(guān)的一些參數(shù),比如工作目錄,環(huán)境變量等等,但是設(shè)置環(huán)境變的時(shí)候,有一個(gè)需要注意的地方就是你設(shè)置的環(huán)境變量不會(huì)改變系統(tǒng)原來(lái)的環(huán)境變量.也就是說(shuō)即使你把path設(shè)為空,這個(gè)進(jìn)程的運(yùn)行的時(shí)候,依然是讀取系統(tǒng)的path找到j(luò)ava這個(gè)命令,否則的話,你把path設(shè)為空,java命令是不可能找得到的.
一般來(lái)說(shuō)ProcessBuilder這個(gè)類都是在萬(wàn)不得已的情況下才用的,因?yàn)橛昧怂院?程序很難保證可移植性,除非你在每個(gè)平臺(tái)上都找到相應(yīng)的命令執(zhí)行相應(yīng)的事情.
盡管千里冰封
依然擁有晴空
你我共同品味JAVA的濃香.