如何从我的 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();
}
}
}
我完全不知道为什么,但添加 "start" 标志使它对我有用。现在我可以从代码中 运行 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"});
我正在尝试从我的 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();
}
}
}
我完全不知道为什么,但添加 "start" 标志使它对我有用。现在我可以从代码中 运行 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"});