Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何保持由Runtime.getRuntime java启动的活动服务_Java_Linux_Spring Boot - Fatal编程技术网

如何保持由Runtime.getRuntime java启动的活动服务

如何保持由Runtime.getRuntime java启动的活动服务,java,linux,spring-boot,Java,Linux,Spring Boot,我通过java exe命令行启动Service.jar(spring boot的构建) Thread thread = new Thread(new Runnable() { @Override public void run() { try { String command = "java -jar " + rootFolder + serviceFile + " " + additionalEnv;

我通过java exe命令行启动Service.jar(spring boot的构建)

Thread thread = new Thread(new Runnable() {
        @Override
        public void run() {
            try {
                String command = "java -jar " + rootFolder + serviceFile + " " + additionalEnv;
                if(SystemUtils.checkLinuxPlatform()){
                    command = "nohup " + command + " &";
                }
                Runtime.getRuntime().exec(command);
            } catch (Exception e) {
                System.out.println(e.getMessage());
            }
        }
    });
。但当我关闭java应用程序时,服务并没有随之终止。
如何在不退出java应用程序或以其他方式启动服务自动化的情况下保持服务运行。

您可以创建一个守护进程,并在该线程上运行
Runtime.getRuntime().exe(cmd)
。我在该线程上启动了Runtime.getRuntime().exe(cmd),但使用
进程而不是
Runtime.getRuntime().exe(cmd)也会遇到同样的问题
并在该进程上调用
waitFor()
。我使用了,但同样的问题也发生了。在您添加的示例中,线程似乎没有被设置为守护进程,您需要调用
thread.setDaemon(true)
才能这样做。您可以创建守护进程线程并运行
Runtime.getRuntime().exe(cmd)
在该线程上。我在该线程上启动了Runtime.getRuntime().exe(cmd),但同样的问题也发生了。在您添加的示例中,该线程似乎没有被设置为守护进程,为此,需要调用
thread.setDaemon(true)