запуск / остановка сервера Postgres с использованием java
Я делаю настольное приложение с java и postgres 13 (версия zip) в качестве СУБД. мы хотим, чтобы создание базы данных, запуск / закрытие сервера было прозрачным для пользователя.
использование ProcessBuilder отлично работало с "initdb.exe" для создания кластера, но у нас возникли проблемы с запуском сервера
1- запуск сервера напрямую с помощью ProcessBuilder
String path = System.getProperty("user.dir");
path = path+"\\pgsql\\bin\\pg_ctl.exe";
String dbPath = System.getProperty("user.dir")+"\\pgsql\\"+dbname;
String logfile = dbPath+"\\"+dbname+"log.txt";
ProcessBuilder builder = new ProcessBuilder(path, "start","-l", logfile, "-D", dbPath);
builder.redirectErrorStream(true);
Process p = builder.start();
BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while (true) {
line = r.readLine();
if (line == null) {
break;
}
System.out.println(line);
}
--- сервер запускается, но блокирует выполнение основной программы.
2- запуск сервера из файла .bat с помощью ProcessBuilder
ProcessBuilder builder = new ProcessBuilder(System.getProperty("user.dir")+"\\pgsql\\start.bat");
в файле .bat мы перепробовали много опций, таких как "/ b", start "".--- сервер запускается, но отображается окно консоли.
мы пробовали почти все предлагаемые решения по stackoverflow, проблема, похоже, не в «запуске программы с использованием java» или «запуске программы в фоновом режиме», проблема в «запуске сервера postgres из java».