[英]Batch file immediately terminates after executing a Java program (if batch file is called from another Java program)
我有一个名为“ StartUpdate.bat”的批处理文件,其中包含以下内容:
set CLASSPATH="myclasspath"
java -cp %CLASSPATH% UpdateProgram
runMyApp.bat
如果我直接从命令行运行“ StartUpdate.bat”,它将执行UpdateProgram,然后立即运行MyApp.bat。 这是意图。
但是,如果我从另一个Java程序调用“ StartUpdate.bat”,则它在完成UpdateProgram后立即终止。 使用此其他Java程序调用“ StartUpdate.bat”
Runtime.getRuntime().exec(path + "StartUpdate.bat");
StartUpdate.bat和其中的UpdateProgram一样可以很好地执行,但在UpdateProgram之后没有其他操作。
为什么会这样呢? 我应该怎么做才能执行批处理文件的其余部分?
使用setDaemon(false)
显式使用用户线程。 似乎有问题。
只要有一个用户(非守护程序)线程,JVM就会使该应用程序保持活动状态。 当不再存在用户线程时,将关闭守护程序线程。
由于守护程序线程通常用于此类“服务器”之类的目的,因此常常会产生误解。
其余方面, ProcessBuilder将是此任务更强大的类。
ProcessBuilder pb = new ProcessBuilder("dir");
Process process = pb.start();
int returnCode = process.waitFor();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.