【问题标题】:How to execute zookeeper-server-start .bat file from my java program?如何从我的 java 程序执行 zookeeper-server-start .bat 文件?
【发布时间】:2019-04-17 22:03:38
【问题描述】:

我正在尝试从我的 java 代码中启动 zookeeper 和 kafka 服务器。我们通常手动执行批处理文件,我正在尝试自动化但服务器永远不会启动。

我尝试过使用相同的代码运行其他 .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 服务器启动并保持启动,而它没有启动。请帮助我哪里出错了,这甚至可能吗?

【问题讨论】:

  • 尝试使用 Java 的任何特殊原因?
  • 我在使用嵌入式 kafka 服务器测试 Kafka 流时遇到问题,其文档也很模糊。所以我打算启动我自己的本地服务器进行测试。

标签: java apache-kafka apache-zookeeper


【解决方案1】:

下面的程序对我有用,它会将所有日志打印到控制台并等待进程终止:

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();
        }
    }
}

【讨论】:

  • 谢谢@Mukesh。添加“开始”标志并为两个文件提供绝对路径,似乎解决了我的问题。
【解决方案2】:

我完全不知道为什么,但是添加“开始”标志使它对我有用。现在我可以在代码中同时运行 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"});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-17
    • 2013-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多