2013-08-13 2 views
1

Я пытаюсь запустить несколько команд .bat с помощью Runtime exec (Java). Проблема в том, что после установки переменных среды я не могу использовать эти переменные.Не удается получить доступ к переменным среды с помощью runtime exec

Runtime rt = Runtime.getRuntime(); 
Process pr; 
pr = rt.exec("cmd.exe /c echo %JAVA_HOME%"); 
InputStream is; 
InputStreamReader isr; 
BufferedReader reader ; 
String line; 
is = pr.getInputStream(); 
isr = new InputStreamReader(is); 
reader = new BufferedReader(isr); 

while ((line = reader.readLine()) != null) { 
System.out.println(line); 
} 
reader.close(); 
pr.getOutputStream().close();` 

JAVA_HOME не возвращает фактический путь env.

+0

Это прекрасно работает для меня, как именно вы пытаетесь запустить этот код? Используете ли вы Eclipse или любой другой инструмент GUI для работы? Можете ли вы показать мне вывод команды «cmd.exe/c echo% JAVA_HOME%» из командной строки – Xinus

+0

Можете ли вы поделиться кодом, который вы используете в файлах летучей мыши? – morgano

+0

@ Xinus Я спрашивал OT, а не вы ;-) – morgano

ответ

1

код работал отлично для меня,

try { 
      Runtime rt = Runtime.getRuntime(); 
      Process pr; 
      pr = rt.exec("cmd.exe /c echo %JAVA_HOME%"); 
      InputStream is; 
      InputStreamReader isr; 
      BufferedReader reader; 
      String line; 
      is = pr.getInputStream(); 
      isr = new InputStreamReader(is); 
      reader = new BufferedReader(isr); 

      while ((line = reader.readLine()) != null) { 
       System.out.println(line); 
      } 

      reader.close(); 
      pr.getOutputStream().close(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

Если это не работает для вас,

  1. убедитесь, что переменная окружения% JAVA_HOME% корректно. Запустить командную строку и общий вывод cmd.exe /c echo %JAVA_HOME%
  2. Вы используете любую IDE для запуска программы?
+0

вывод команды «cmd.exe/c echo% JAVA_HOME%» из командной строки возвращает «C: \ Program Files \ Java \ jdk1.7.0_25 \», однако при выполнении из Eclipse IDE с использованием вышеупомянутого кода он возвращается как " % JAVA_HOME% "(имя переменной echo) – user2640248

+0

Соблюдается, что несколько переменных env не возвращаются, в том числе JAVA_HOME и другие настраиваемые переменные env. Однако переменные env, такие как USERNAME, PATH, DIR, TEMP, возвращаются с правильным значением. ПРИМЕЧАНИЕ: Вход в систему как администратор – user2640248

+0

Я попытался прочитать доступные переменные env в Eclipse IDE с командой «rt.exec (« cmd.exe/c SET »)» и заметил, что указаны не все переменные env, указанные в системных свойствах в данном выходе. Однако одна и та же команда, выполненная из командной строки, перечисляет все переменные env. – user2640248