如何在java中传递bashscript的参数?
我有以下命令要通过我的java程序运行 /kafka-topics.sh--zookeer zk1.xx.com:2181、zk2.xx.com:2181、zk3.xx.com:2181--delete--topic testTopic 我把这个bash脚本称为like如何在java中传递bashscript的参数?,java,bash,apache-kafka,Java,Bash,Apache Kafka,我有以下命令要通过我的java程序运行 /kafka-topics.sh--zookeer zk1.xx.com:2181、zk2.xx.com:2181、zk3.xx.com:2181--delete--topic testTopic 我把这个bash脚本称为like ProcessBuilder builder = new ProcessBuilder(CConstants.KAFKA_TOPIC_SH); builder.command("--zookeeper","zk1.xx.com:
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脚本
这里
- --zookeeper,-delet,e--topic是参数
- 其他参数是这些参数
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();
调用command方法时,覆盖传递给构造函数的命令。构造函数有一个vararg变量,您还可以在其中传递命令参数:
new ProcessBuilder(CConstants.KAFKA_TOPIC_SH, "--zookeeper",
"zk1.xx.com:2181,zk2.xx.com:21811,zk3.xx.com:2181", "--delete", "--topic", "testTopic")
.start();
您可以直接调用kafkaapi,而不是将java命令封装到bash脚本中。比如说,
字符串[]选项=新字符串[]{
“--创建”,
“--动物园管理员”,
“zk_主机:端口”,
“--分区”,
“1”,
“--主题”,
“测试”,
“--复制因子”,
"1" };
TopicCommand.main(选项) 你能给出一个删除主题的示例吗?String[]options=newstring[]{--delete“,“--zookeeper”,“zk host:port”,“--topic”,“your_topic_name”};TopicCommand.main(选项);谢谢你真是太好了。我从kafka用户列表中询问,他们建议使用bash脚本。