Как передать аргументы для bashscript в java?

2

У меня есть команда, которая будет запущена через мою java-программу;

./kafka-topics.sh --zookeeper zk1.xx.com:2181,zk2.xx.com:2181,zk3.xx.com:2181 --delete --topic 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 с параметрами?

Вот

    --zookeeper, - delete, e --topic - аргументы Другими являются параметры для этих арабов

спросил(а) 2016-10-16T15:04:00+03:00 3 года, 1 месяц назад
3
3 ответа
3

Ошибка, которую вы получаете, показывает, что ваш первый параметр интерпретируется как имя команды. Попробуй это:

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-16T15:14:00+03:00 3 года, 1 месяц назад
1

вы можете напрямую ссылаться на API Kafka, а не на инкапсуляцию java-команды в скрипт bash. Например,

String [] options = new String [] {
"--create",
"--zookeeper",
"Zk_host: порт",
"--partitions",
"1",
"--topic",
"test",
"--replication-фактор",
"1"};
TopicCommand.main (варианты);

ответил(а) 2016-10-17T06:27:00+03:00 3 года, 1 месяц назад
1

при вызове метода команды вы перезаписываете команду, переданную конструктору 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-16T16:05:00+03:00 3 года, 1 месяц назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема