Как выполнить файл .bat zookeeper-server-start из моей Java-программы? - PullRequest
0 голосов
/ 17 апреля 2019

Я пытаюсь раскрутить серверы zookeeper и kafka из моего кода Java. Обычно мы запускаем пакетные файлы вручную, я пытаюсь автоматизировать, но сервер никогда не запускается.

Я пытался запустить другие .bat-файлы, используя тот же код, и они работают как чудо, но zookeeper и kafka-server никогда не выполняются успешно и не выдают никакой ошибки

Runtime.getRuntime().exec(new String[]{"cmd.exe", "/c",
    "C:/kafka_2.11-2.1.0/kafka_2.11-2.1.0/bin/windows/zookeeper-server-start.bat",
    "C:/kafka_2.11-2.1.0/kafka_2.11-2.1.0/config/zookeeper.properties"});

Я хочу, чтобы сервер zookeeper запускался и продолжал работать, тогда как он этого не делает. Пожалуйста, помогите, где я иду не так, это вообще возможно?

Ответы [ 2 ]

0 голосов
/ 17 апреля 2019

Я точно не знаю, почему, но добавление флага «старт» заставило его работать на меня.Теперь я могу запускать серверы zookeeper и kafka из кода.Код, который я использую, выглядит следующим образом:

Runtime.getRuntime().exec(new String[]{"cmd.exe", "/c", "start",
    "C:/kafka_2.11-2.1.0/kafka_2.11-2.1.0/bin/windows/zookeeper-server-start.bat",
    "C:/kafka_2.11-2.1.0/kafka_2.11-2.1.0/config/zookeeper.properties"});

Runtime.getRuntime().exec(new String[]{"cmd.exe", "/c", "start",
    "C:/kafka_2.11-2.1.0/kafka_2.11-2.1.0/bin/windows/kafka-server-start.bat",
    "C:/kafka_2.11-2.1.0/kafka_2.11-2.1.0/config/server.properties"});
0 голосов
/ 17 апреля 2019

У меня сработала нижеприведенная программа, она выведет все журналы на консоль и будет ждать завершения процесса:

import java.io.*;
public class ExecuteProg {
    public static void main(String[] args) {
        try {
            Process p = Runtime.getRuntime().exec(new String[]{"cmd.exe", "/c",
                    "E:/Softwares/kafka_2.11-2.0.0/bin/windows/zookeeper-server-start.bat",
                    "E:/Softwares/kafka_2.11-2.0.0/config/zookeeper.properties"});
            BufferedReader in = new BufferedReader(
                                new InputStreamReader(p.getInputStream()));
            String line = null;
            while ((line = in.readLine()) != null) {
                System.out.println(line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
...