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

标签 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);

我做错了什么?

最佳答案

使用所需的 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 机器都安装了它是相当安全的)

关于java - 在 java 程序中启动另一个 java 程序并终止母进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49686403/

相关文章:

java - WebViews 的 ViewGroup 历史记录问题

java - 如何使用 OAuth2 提供程序替换 Camunda 身份验证

c++ - 如何访问 "askpass"程序以在 GUI 中获得根权限?

macos - 如何让我的 ubuntu VM 自动调整屏幕分辨率以适应我的 macbook pro 或外接显示器?

java - 编译器错误 - 找不到符号

java - 无法从 Google Cloud Storage 返回对象名称

linux - 从命令行执行一个 gui 应用程序并将其发送到后台

Ubuntu - Elasticsearch - 错误 : Cannot allocate memory

python - Opencv Videocapture 无法读取 https url 视频

java - Java客户端有大查询的代理配置吗?