Я написал программу java для открытия внешнего приложения, когда я нажимаю кнопку.
Runtime.getRuntime().exec(command);
Когда я нажимаю кнопку, соответствующая команда будет передана аргументу exec, например, в окнах
Runtime.getRuntime().exec(
"C:\\ProgramFiles\\Google\\Chrome\\Application\\chrome.exe")
Кнопка добавлена в JFrame
Этот код отлично работает в обоих окнах и ubuntu (если правильная команда передана). Но в Ubuntu, если я открываю внешнее приложение, а затем закрываю JFrame
внешнее приложение также закрывается с помощью JFrame
. но мне нужно сохранить внешнее приложение open.even jframe закрыто (например, окна)
при вызове внешнего приложения из приложения java, приложение JAVA является родительским процессом, а внешнее приложение будет дочерним процессом. Если вы проверите статус процесса в ubuntu после запуска внешнего приложения, он покажет вам оба процесса с разными значениями. Теперь, когда JVM запускает внешнее приложение (как новый поток), он будет выполняться там до тех пор, пока родитель не будет жив, когда вы закроете приложение java, он также закроет все дочерние процессы.
Runtime.exec()
возвращает объект Process
. Вы можете использовать это, чтобы убить внешнее приложение:
Process p = Runtime.getRuntime().exec(command);
p.destory();
Редактировать:
Если ваша цель - сохранить запущенное внешнее приложение, запущенное после закрытия Java-программы, вы должны запустить его при start
Windows. Чтобы получить дополнительную информацию о том, как использовать это, в окне командной строки введите следующее:
start /?
start
Windows.