首页 > 解决方案 > 为什么当启动代码 X 的其他代码结束时,java 代码 X 会中断?

问题描述

我的 crontab 文件中有以下行: */ 8-21 * * * /usr/bin/xfce4-terminal --display=:0 -H --command="java -jar /full/path/to/myJarFile.jar" 这会在 8 到 22 小时之间每 10 分钟启动一次 jar 文件,并且运行良好。

在 java 代码中(在 myJarFile.jar 中)有以下几行:

String command = "/usr/bin/xfce4-terminal --display=:0 -H --command='java -jar /full/path/to/" + which + ".jar'";
String[] commandNArgs = new String[]{"/bin/sh", "-c", command};
Process p;
try {
   p = Runtime.getRuntime().exec(commandNArgs);
} catch (Exception e) {
   System.out.println("please restart");
}

这些行启动了几个 jar 文件,具体取决于 String "which" 的值。到目前为止,一切都很好。但是随后 myJarFile.jar 中的 java 代码结束了,它关闭了刚刚启动的“哪些代码”,尽管它们应该仍在运行......(如果我将命令/usr/bin/xfce4-terminal --display=:0 --command="java -jar /full/path/to/myJarFile.jar"手动放在终端中,所有窗口都按预期保持打开状态.) 希望有人知道他们为什么关闭?

标签: java

解决方案


推荐阅读