2015-07-07 2 views
0

Я пытаюсь написать GUI Java в NetBeans для выполнения программы в командной строке, и в настоящее время этот кусок кода, назначенного на кнопкуОткройте окно командной строки + входы для GUI

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {           
    try 
     { 
     Runtime rt = Runtime.getRuntime(); 
      Process pr = rt.exec("open -a /Applications/Utilities/Terminal.app"); 


      BufferedReader input = new BufferedReader(new InputStreamReader(pr.getInputStream())); 

      String line=null; 

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

      int exitVal = pr.waitFor(); 
      System.out.println("Exited with error code "+exitVal); 
      } 
    catch(Exception e) 
      { 
      System.out.println(e.toString()); 
      e.printStackTrace(); 
      } 
} 

Это открывает терминал, однако я хотел бы знать, как мне следует вводить команды в терминал, но при этом просто нажимать кнопку (например: «ls», «cd», «javac» и т. д.) Спасибо!

UPDATE: @Codebender Мой код теперь выглядит следующим образом.

Runtime rt = Runtime.getRuntime(); 
    Process pr = rt.exec("open -a /Applications/Utilities/Terminal.app"); 
      new PrintStream(pr.getOutputStream).println("ls"); 

Я получаю ошибку «не удается найти символ, символ: переменная getOutputStream, местоположение: переменная пр типа процесса» и красной линии под getOutputStream. Есть идеи?

@Codebender Так должно быть так?

new PrintStream(pr.getOutputStream{println("ls")}); 
+0

@Codebender у меня нет. Не могли бы вы показать мне код, как это будет выглядеть? Я попробовал просто копировать и вставлять эту строку кода в свой скрипт, но я не думаю, что так оно и должно быть выполнено. Я довольно новичок в этом аспекте java. Спасибо :) – Shambaree

+0

@Codebender Я добавил комментарий после окончания моего сообщения в ответ. – Shambaree

+0

Значит, так должно быть? (См. Обновление в сообщении) – Shambaree

ответ

0

Использование может использовать outputStream для записи на терминал. Оберните его с помощью печати, чтобы упростить работу.

Process pr = rt.exec("open -a /Applications/Utilities/Terminal.app"); 
PrintStream ps = new PrintStream(pr.getOutputStream()); 
ps.println("ls" + System.lineSeparator()); 
// Follow with the reading of output from terminal. 

Если ваш Terminal.app является Linux по умолчанию терминал, вместо того, чтобы открыть новый, вы можете попробовать,

Process pr = rt.exec("ls"); 
// Follow with the reading of output. 
+0

Это ничего не делало :(Он просто остановил мой терминал, а затем закончил, как до «выходил с кодом ошибки 0» (по сути, закончил программу). Есть ли в любом случае я могу дать больше информации? Я чувствую, что я, вероятно, что-то не так. Спасибо за помощь! – Shambaree

+0

@Shambaree Проверьте, подходит ли мое альтернативное решение для вас. – Codebender

+0

Нет. :(Все, что я хочу сделать, это ввести команду в терминал и выполнить ее после ее открытия. в Netbeans на OSX кстати – Shambaree

Смежные вопросы