Runtime.getRuntime()。exec(cmd,vars)在Linux中不起作用

时间:2013-12-02 14:13:58

标签: java linux eclipse jdk1.6

使用时

final Map<String, String> env = new HashMap<String, String>(System.getenv());
env.put("ECLIPSE_PROJ_PATH", fileSelectedPath);
final String[] envVars = SystemUtils.mapToStringArray(env);
try {           

Runtime.getRuntime().exec("/usr/bin/gedit",envVars).waitFor();
} catch (InterruptedException e) {
    e.printStackTrace();
}

它不起作用gedit不会显示,也不会发生异常。

但删除env变量时只使用exec方法中的命令,如

Runtime.getRuntime().exec("/usr/bin/gedit").waitFor();

它可以正常工作。

我需要在运行程序时设置我的env变量.. 注意:这在windows上工作正常。

1 个答案:

答案 0 :(得分:0)

我不确定SystemUtils.mapToStringArray返回什么,但可能更容易使用ProcessBuilder,其中可以在Map中提供环境变量。

http://docs.oracle.com/javase/6/docs/api/java/lang/ProcessBuilder.html

http://docs.oracle.com/javase/6/docs/api/java/lang/ProcessBuilder.html#environment()

相关问题