首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在ubuntu中重启java应用程序

在ubuntu中重启java应用程序
EN

Stack Overflow用户
提问于 2010-12-26 23:35:37
回答 2查看 5.7K关注 0票数 1

在ubuntu中重启java应用的最好方法是什么?我知道你可以从终端运行这样的命令,但它似乎不起作用……

代码语言:javascript
运行
复制
        String restartArgs = "java -jar \'/home/fdqadmin/NetBeansProjects/dbConvert2/dist/dbConvert2.jar\' --Terminal=true";
        Process restart = Runtime.getRuntime().exec(restartArgs);
        System.exit(1);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-12-26 23:55:28

您正在使用System.exit(1)杀死父进程,因此它的子进程也会被销毁。要重新启动,通常需要提供一个shell脚本包装器来启动实际的Java应用程序。

代码语言:javascript
运行
复制
#!/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
EN

Stack Overflow用户

发布于 2010-12-26 23:49:44

尝试提供JAVA_HOME的完整路径(例如,/usr/lib/jvm/java-6-sun/bin/java而不是java)。exec没有Shell环境变量。

还可以使用

代码语言:javascript
运行
复制
 restart.waitFor(); //wait until process finishes 

以确保Java在进程完成之前不会退出。

如果您确实想在shell中运行(并使用shell特定的东西,如管道和ls),请执行以下操作:

代码语言:javascript
运行
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4534367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档