Я запускаю JAR-файл из своего файла java swing с использованием Process proc Runtime.getruntime.exec();
, и мне нужно его отключить, чтобы он работал во всех операционных системах.Процесс выключения запускается с помощью Runtime exec();
Я пробовал proc.detroy();
, но это не позволяет ему полностью отключиться и вызовет проблемы с программой.
Что мне нужно сделать, чтобы обеспечить безопасное закрытие всех операционных систем?
Я предполагаю, что мне нужно будет проверить, какая ОС используется и обрабатывать каждый отдельно, но что нужно сделать, чтобы обеспечить безопасное закрытие каждого из них?
Вот код StartStop.java:
public class StartStop {
static Process proc = null;
public void program() {
new Thread() {
public void run() {
try {
proc = Runtime.getRuntime().exec("java -jar DEDServer_release.jar");
String res = org.apache.commons.io.IOUtils.toString(new BufferedReader(new InputStreamReader(proc.getErrorStream())));
if(res.contains("Error")){
JOptionPane.showMessageDialog(null, "Failed to start DEDServer. Make sure that this file is in the same directory as DEDServer_release.jar");
}
}catch (IOException e) {
JOptionPane.showMessageDialog(null, "Failed to start DEDServer. Make sure that this file is in the same directory as DEDServer_release.jar");
}
}
}.start();
}
}
Спасибо за вашу помощь.
JOptionPane должен быть обернут внутри invokeLater, больше читайте в учебнике Oracle Начальная тема – mKorbel
Почему process.destroy() не работает? –
@JPMoresmau В вопросе говорится: «Я пробовал proc.detroy(), но это не позволяет ему полностью отключиться и вызовет проблемы с программой». –