使用时
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上工作正常。
答案 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()