Из моего проекта Java я хочу запустить внешний .bat файл в другом потоке. Для этого я использую следующий метод:
private void posAppRunner(final String path[], final Class targetClass) {
new Thread(new Runnable() {
public void run() {
try {
String line;
Process p = Runtime.getRuntime().exec(path);
BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((line = input.readLine()) != null) {
System.out.println(line);
}
input.close();
} catch (IOException e) {
LogFactory.getLog(targetClass).warn("Error when starting a PosApplication: " + e.getMessage());
}
}
}).start();
Я запускаю следующий файл .bat:
call chdir %~dp0
start java <_some_arguments>
Поэтому, когда я делаю это локально из IntelliJ IDEA, все работает правильно - появляется процесс cmd, после этого появляется процесс java, а после этого процесс cmd исчезает.
Но когда я запускаю свой проект Java с помощью этого метода через ANT в службе Windows TeamCity, появляется только процесс cmd, и после этого ничего не происходит. Процесс Java, который должен быть запущен из файла bat, не отображается. Похоже, я не читаю вывод процесса, но я читаю!
Не могли бы вы объяснить мне, как преодолеть эту ситуацию?