我有后续的命令要通过我的java程序运行;
./kafka-topics.sh --动物园管理员zk1.xx.com:2181,zk2.xx.com:2181,zk3.xx.com:2181 -删除-主题testTopic
我把这个bash脚本叫做;
ProcessBuilder builder = new ProcessBuilder(CConstants.KAFKA_TOPIC_SH);
builder.command("--zookeeper","zk1.xx.com:2181,zk2.xx.com:21811,zk3.xx.com:2181",
"--delete", "--topic", "testTopic");
builder.start();但我会跟随错误;
java.io.IOException: Cannot run program "--zookeeper": error=2, No such file or directory
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048) ~[?:1.8.0_66]
at如何使用参数运行bash脚本?
这里
发布于 2016-10-16 13:05:01
调用命令方法时,将重写传递给ProcessBuilder构造函数的命令。构造函数有一个vararg变体,您还可以传递命令参数:
new ProcessBuilder(CConstants.KAFKA_TOPIC_SH, "--zookeeper",
"zk1.xx.com:2181,zk2.xx.com:21811,zk3.xx.com:2181", "--delete", "--topic", "testTopic")
.start();发布于 2016-10-16 12:14:25
您所得到的错误显示您的第一个参数被解释为命令名。试试这个:
ProcessBuilder builder = new ProcessBuilder();
builder.command(CConstants.KAFKA_TOPIC_SH,"--zookeeper","zk1.xx.com:2181,zk2.xx.com:21811,zk3.xx.com:2181",
"--delete", "--topic", "testTopic");
builder.start();发布于 2016-10-17 03:27:26
您可以直接调用Kafka,而不是将java命令封装到bash脚本中。例如,
String[] options =新String[]{
"--create", "--zookeeper", "zk\_host:port", "--partitions", "1", "--topic", "test", "--replication-factor", "1" };TopicCommand.main(选项);
https://stackoverflow.com/questions/40070045
复制相似问题