Ответ 1
getenv
получает переменную окружения. getProperty
получает свойство Java. Переменные среды указаны на уровне ОС. Свойства Java задаются путем передачи опции -D
в JVM (и может быть установлен программно).
Возможный дубликат:
В чем разница между системным свойством и переменной среды
В чем разница между System.getenv() и System.getProperty()?
Когда мы запускаем любую команду с помощью Processbuilder, мы можем установить переменные среды, например:
String[] vCmd = { System.getenv("ANT_HOME") + "/bin/ant", "-f",
ANT_BUILD_FILE, TARGET };
ProcessBuilder pb = new ProcessBuilder(vCmd);
Map<String, String> env = pb.environment();
env.put("CLASSPATH",
antHome+"/lib/ant.jar:"
+ antHome+"/lib/ant-launcher.jar:"
+ antHome+"/lib/ant-nodeps.jar:"
);
try{
Process process = pb.start();
InputStream is = process.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
pb.wait();
}
catch(Exception e)
System.out.println(e.getMessage());
}
Если я установил некоторые свойства с помощью System.setProperties() перед этим методом, доступен ли этот процесс, запущенный ProcessBuilder?
getenv
получает переменную окружения. getProperty
получает свойство Java. Переменные среды указаны на уровне ОС. Свойства Java задаются путем передачи опции -D
в JVM (и может быть установлен программно).
System.getenv()
для переменных среды операционной системы, тогда как System.getProperty()
для аргументов JVM, которые передаются как -DpropName=value
в программу запуска приложений Java (java
).