在ubuntu中重启java应用的最好方法是什么?我知道你可以从终端运行这样的命令,但它似乎不起作用……
String restartArgs = "java -jar \'/home/fdqadmin/NetBeansProjects/dbConvert2/dist/dbConvert2.jar\' --Terminal=true";
Process restart = Runtime.getRuntime().exec(restartArgs);
System.exit(1);发布于 2010-12-26 23:55:28
您正在使用System.exit(1)杀死父进程,因此它的子进程也会被销毁。要重新启动,通常需要提供一个shell脚本包装器来启动实际的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技能也并非万无一失。
发布于 2010-12-26 23:49:44
尝试提供JAVA_HOME的完整路径(例如,/usr/lib/jvm/java-6-sun/bin/java而不是java)。exec没有Shell环境变量。
还可以使用
restart.waitFor(); //wait until process finishes 以确保Java在进程完成之前不会退出。
如果您确实想在shell中运行(并使用shell特定的东西,如管道和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 finisheshttps://stackoverflow.com/questions/4534367
复制相似问题