Мне нужна помощь с моим настольным приложением Java.
У меня есть кнопка, которая вызывает (это мое намерение) терминал (Linux) или prompt/cmd (Windows) и передает некоторую команду (я пытаюсь использовать команду ping).
Я просто знаю, как открыть терминал, но я не могу передать команду. Как я это делаю?
Благодарю.
Отредактировано:
Мой код в это время:
Runtime rt = Runtime.getRuntime();
String sistemaOperacional = System.getProperty("os.name").toLowerCase();
String ip = "192.168.7.1";
String comando = "ping -c 100 "+ip;
if (sistemaOperacional.contains("linux")){
try {
rt.exec("gnome-terminal ");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
else if (sistemaOperacional.contains("win")){
try {
rt.exec("cmd.exe /c start command");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
else{
JOptionPane.showMessageDialog(null, "Não foi possível identificar o sistema operacional!");
}
Вы должны найти документацию для своего терминала для опции, которая устанавливает команду, которая будет запущена при запуске терминала. Например, для xterm
это -e
, поэтому для запуска команды из Java-кода в xterm
вы бы сделали, например:
Runtime.getRuntime().exec("xterm -e ls;read"); // read is here just for the terminal not to close right away
Чтобы открыть терминал, запустите ls
и дождитесь, пока пользователь нажимает клавишу ввода, пока терминал не закроется.
Но так как вы не должны полагаться на свой пользователь, чтобы иметь определенный терминал по умолчанию, вам лучше использовать системный по умолчанию, а -e
является стандартным параметром для многих терминалов (например, gnome-terminal
использует его):
Runtime.getRuntime().exec("x-terminal-emulator -e ls;read");
-e
. Поскольку команда - это просто строка, вы можете составить эту команду в своем коде Java, используя ваши переменные, да. Я поставил read
только для того, чтобы терминал не закрывался сразу после появления. Вероятно, есть лучший способ сохранить терминал с открытым аргументом -e
(если вам это, конечно, нужно), но я его не нашел.