UbuntuでJavaアプリを再起動します
-
13-10-2019 - |
質問
UbuntuでJavaアプリを再起動する最良の方法は何ですか?私はあなたがターミナルからこのようなコマンドを実行できることを知っていますが、それは機能していないようです...
String restartArgs = "java -jar \'/home/fdqadmin/NetBeansProjects/dbConvert2/dist/dbConvert2.jar\' --Terminal=true";
Process restart = Runtime.getRuntime().exec(restartArgs);
System.exit(1);
解決
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 $?;
注記のコードは、大まかな粗いアウトラインです。典型的なラッパーは、スタートアップスクリプト自体などに渡されたコマンドラインの引数に対処するためにはるかに複雑です。
他のヒント
Java_home(Eg/usr/lib/jvm/java-6-sun/bin/javaの代わりに)のフルパスを提供してみてください。幹部には、シェルエニロンメント変数がありません。
も使用します
restart.waitFor(); //wait until process finishes
プロセスが終了する前にJavaが終了しないようにするため。
シェルで実行したい場合(そしてパイプや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
所属していません StackOverflow