在java程序中启动另一个java程序并终止母进程

时间:2018-04-06 06:05:53

标签: java ubuntu

我在我的java文件中使用终端命令“java -jar secondApp.jar”来启动secondApp.jar。
即使第一个应用程序被杀,我也需要secondApp.jar才能运行。
此方案在Windows环境中完美运行。但是当我在linux环境(Ubuntu 16.04)中测试它时,似乎杀死第一个进程会杀死这两个进程。
这是我用来启动第二个应用程序的代码。

String command = "java -jar secondApp.jar"
Process process = Runtime.getRuntime().exec(command);

我做错了什么?

1 个答案:

答案 0 :(得分:0)

使用所需的java命令准备批处理文件和linux脚本文件,然后尝试:

    if (SystemUtils.IS_OS_WINDOWS) {
        // run batch file
        String batchFullPath = new File("C:\\myBatchFile.bat").getAbsolutePath();
        Runtime.getRuntime().exec("cmd /C start " + batchFullPath);
    } else if (SystemUtils.IS_OS_LINUX) {
        // run linux script
        String scriptFullPath = new File("~/myScriptFile.sh").getAbsolutePath();
        File workingDir = new File("~");
        Runtime.getRuntime().exec("/usr/bin/xterm " + scriptFullPath, null, workingDir);
    } else {
        throw new RuntimeException("Unsupported Operating System");
    }

(使用xterm,因为假设每台Linux机器安装它都是相当安全的)