перезапустите Java-приложение в Ubuntu - PullRequest
1 голос
/ 26 декабря 2010

Какой лучший способ перезапустить Java-приложение в Ubuntu? Я знаю, что вы можете запускать такие команды из терминала, но, похоже, это не работает ...

        String restartArgs = "java -jar \'/home/fdqadmin/NetBeansProjects/dbConvert2/dist/dbConvert2.jar\' --Terminal=true";
        Process restart = Runtime.getRuntime().exec(restartArgs);
        System.exit(1);

Ответы [ 2 ]

1 голос
/ 26 декабря 2010

Вы убиваете родительский процесс с помощью System.exit (1), поэтому его дочерний процесс также уничтожается. Для перезапуска вы обычно предоставляете оболочку сценария оболочки для запуска реального приложения Java.

#!/bin/sh
restartCode="1"; # predefined restart signal code
java -jar '/home/fdqadmin/NetBeansProjects/dbConvert2/dist/dbConvert2.jar' --Terminal=true; # run java program
if [ $? -eq restartCode ] # if exit code is equal to predefined restart signal code
then
  $0; # restart script
fi
exit $?;

Обратите внимание, что приведенный выше код представляет собой грубый, грубый набросок. Типичные оболочки намного сложнее иметь дело с аргументами командной строки, передаваемыми самому сценарию запуска и т. Д. И т. Д. Кроме того, мои sh-навыки не являются безошибочными.

1 голос
/ 26 декабря 2010

попробуйте указать полный путь для JAVA_HOME (например, / usr / lib / jvm / java-6-sun / bin / java вместо java).В exec нет переменных окружения Shell.

также используйте

 restart.waitFor(); //wait until process finishes 

, чтобы убедиться, что Java не завершает работу до завершения процесса.


Если вы хотите запустить в оболочке (и использовать оболочкуконкретные вещи, такие как pipe и ls) делают это:

List<String> commands = new ArrayList<String>();
commands.add("/bin/sh");
commands.add("-c");
commands.add("java -jar /home/fdqadmin/NetBeansProjects/dbConvert2/dist/dbConvert2.jar");

SystemCommandExecutor commandExecutor = new SystemCommandExecutor(commands);
int result = commandExecutor.executeCommand();
commandExecutor.waitFor(); //wait until process finishes
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...