从批处理文件启动jar会阻塞批处理文件



我创建了一个批处理文件来启动一个jar,并从process Builder中运行它。当启动命令被触发时,控制永远不会回来,BufferReader进入无限循环。感谢您为取消阻止此操作提供的任何帮助。

在Windows Server 2012 R2 Standard 上运行此代码

Java代码

ProcessBuilder pb = new ProcessBuilder("startabx6.bat",abx);
pb.directory(new File(System.getProperty("user.dir")));
Process process = pb.start();
String line;
BufferedReader reader  = new BufferedReader(new InputStreamReader(process.getInputStream()));
while (((line = reader.readLine())!=null )) {
log.info(line);
}
reader.close();

批处理文件

@ECHO OFF
echo %1
set build=%1
echo %build%
FOR /F "tokens=5 delims= " %%P IN ('netstat -a -n -o ^| findstr :8080') DO TaskKill.exe /PID %%P /F
echo "launching abx jar"
start java -jar -DServer.port=8080 libsABJars%build%

感谢您的帮助!对我有效的解决方案是使用StreamGobbler类,它可以在不同的线程中读取日志。

相关内容

最新更新