今天说的是通过java代码动态设定linux系统的环境变量.老实说我这两天google了好久也没查到如何做.可能实际用途并不是很大.但是找了半天既然解决了就记录下吧
java代码
import java.io.bufferedinputstream;
import java.io.file;
import java.io.ioexception;
import java.io.inputstream;
public class executecmd {
/**
* @param args
*/
public static void main(string[] args) {
string[] commonds = {"sh","-c","export java_home=/usr/java/jdk;echo $java_home"};
runsystemcommand(commonds, null);
}
public static void runsystemcommand(string[] command, file file) {
if (command != null && !command.equals("")) {
try {
process ps = null;
if (file != null)
ps = runtime.getruntime().exec(command, null, file);
else
ps = runtime.getruntime().exec(command);
string message = loadstream(ps.getinputstream());
string errormeg = loadstream(ps.geterrorstream());
system.out.println(message);
system.out.println("-------");
system.out.println(errormeg);
try {
ps.waitfor();
} catch (interruptedexception e) {
e.printstacktrace();
}
} catch (ioexception e) {
e.printstacktrace();
}
}
}
private static string loadstream(inputstream in) throws ioexception {
int ptr = 0;
in = new bufferedinputstream(in);
stringbuffer buffer = new stringbuffer();
while ((ptr = in.read()) != -1) {
buffer.append((char) ptr);
}
return new string(buffer.tostring().getbytes("iso-8859-1"), "gbk");
}
}
其实最主要的一句就是这个
string[] commonds = {sh,-c,export java_home=/usr/java/jdk;echo $java_home};
这个命令的写法.其他的都能google到.而且据我测试,这些不能写在一起.比如说这样
string tmp_run_cmd = sh -c 'export java_home=/usr/java/jdk;echo $java_home'; //这样是不行的..
更多通过java代码动态设定linux系统的环境变量。