簡體   English   中英

如何從我的java程序執行zookeeper-server-start .bat文件?

[英]How to execute zookeeper-server-start .bat file from my java program?

我試圖從我的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服務器啟動並保持啟動狀態,而不是。 請幫助我哪里出錯了,這有可能嗎?

下面的程序對我有用,它會將所有日志打印到控制台,並等待進程終止:

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

我完全不知道為什么,但添加“開始”標志使它適合我。 現在我可以在代碼中運行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"});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM