Доступ к системным переменным Windows в Java 1.4 - PullRequest
2 голосов
/ 26 июня 2009

Какой самый лучший / надежный способ получить значения переменных среды в Windows при использовании J2SE 1.4?

Ответы [ 6 ]

7 голосов
/ 26 июня 2009

Вы можете использовать getEnv () для получения переменных окружения:

String variable = System.getenv("WINDIR");  
System.out.println(variable);  

Я полагаю, что функция getEnv () в какой-то момент устарела, но потом "устарела" позже в Java 1.5

ETA:

Я вижу, что вопрос теперь относится конкретно к Java 1.4, так что это не сработает для вас (или, по крайней мере, вы можете получить предупреждение об устаревании). Я оставлю здесь ответ, но если кто-то еще наткнется на этот вопрос и использует более позднюю версию.

4 голосов
/ 26 июня 2009

Для этого есть переключатель в JVM. С здесь :

Запустите JVM с ключом "-D", чтобы передать свойства приложению и прочитайте их с помощью метода System.getProperty ().

SET myvar=Hello world
SET myothervar=nothing
java -Dmyvar="%myvar%" -Dmyothervar="%myothervar%" myClass

затем в myClass

String myvar = System.getProperty("myvar");
String myothervar = System.getProperty("myothervar");
1 голос
/ 26 июня 2009

Передайте их в JVM как системные свойства -D, например:

java -D<java var>=%<environment var>%

Таким образом, вы не привязываетесь к конкретной ОС.

1 голос
/ 26 июня 2009

У вас точно нет способа получить прямой доступ к переменным окружения из java API. Единственный способ добиться этого с помощью Runtime.exec с таким кодом:

Process p = null;
Runtime r = Runtime.getRuntime();
String OS = System.getProperty("os.name").toLowerCase();
// System.out.println(OS);
if (OS.indexOf("windows 9") > -1) {
  p = r.exec( "command.com /c set" );
}
else if ( (OS.indexOf("nt") > -1)
       || (OS.indexOf("windows 2000") > -1 )
       || (OS.indexOf("windows xp") > -1) ) {
  // thanks to JuanFran for the xp fix!
  p = r.exec( "cmd.exe /c set" );
}

Хотя вы можете получить доступ к переменным Java благодаря System.getProperties (); Но вы получите только некоторые переменные env, сопоставленные самой JVM, и дополнительные данные, которые вы можете предоставить в командной строке java с помощью "-Dkey = value"

Для получения дополнительной информации см. http://www.rgagnon.com/javadetails/java-0150.html

0 голосов
/ 26 ноября 2014

Apache Commons Exec предоставляет "org.apache.commons.exec.environment.EnvironmentUtils" способ получения переменных среды в предыдущих версиях JDK 1.5:

(String) EnvironmentUtils.getProcEnvironment().get("SOME_ENV_VAR")
0 голосов
/ 11 мая 2012
Map<String, String> env = System.getenv();
for (String envName : env.keySet()) {
     System.out.format("%s=%s%n", envName, env.get(envName));
}
...