我创建了一个批处理文件来启动一个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
类,它可以在不同的线程中读取日志。