如何保持由Runtime.getRuntime java启动的活动服务
我通过java exe命令行启动Service.jar(spring boot的构建)如何保持由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;
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)
。