簡體   English   中英

批處理文件在執行Java程序后立即終止(如果從另一個Java程序調用了批處理文件)

[英]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之后沒有其他操作。

為什么會這樣呢? 我應該怎么做才能執行批處理文件的其余部分?

您可以使用調用開始執行java程序

使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM