2016-05-08 2 views
0

Я написал менеджер процесс программы один из вещей, которые он делает, чтобы закрыть все запущенные процессы, когда он выключен , так что это кодКоманда работает на терминале, но не работает в Java программы

public void stop_all() throws IOException { 
    Process p = Runtime.getRuntime().exec("kill -9 -1"); 
    System.out.println("killed"); 
} 

и есть действие на кнопку

private void exitButton(java.awt.event.ActionEvent evt) {           
Run ob = new Run(); 
    try { 
     ob.stop_all(); 
    } catch (IOException ex) { 
     Logger.getLogger(mainmenu.class.getName()).log(Level.SEVERE, null, ex); 
    } 

this.dispose(); 

}

я понятия не имею, почему это не работает, я выполнить эту запятую й в терминале и она отлично работает

пожалуйста, помогите :)

+0

Вы можете попытаться прочитать процесс вывода, чтобы увидеть, если есть какие-либо ошибки, [вот пример] (http://stackoverflow.com/questions/8149828/read-the-output-from-java-exec), но я предполагаю, что эта программа Java не имеет необходимых разрешений для запуска этой команды. – Titus

+0

Что вы подразумеваете под «программой»? Вы имеете в виду ajar? Если да, попробуйте запустить банку в терминале с java -jar и вывести вывод ошибки –

+0

Не получаете ли вы каких-либо исключений/ошибок? Если да, отправьте его здесь. – PseudoAj

ответ

0

Я до сих пор скептически относятся к разрешениям программы. Но из этого reference вам нужно указать путь к команде в exec().

Так что ваш код должен, вероятно, будет:

public void stop_all() throws IOException { 
    Process p = Runtime.getRuntime().exec("/bin/kill -9 -1"); 
    System.out.println("killed"); 
} 
+0

, она по-прежнему не работает и в дополнение к моему вопросу есть еще одна функция содержит команды kill отлично работает –

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