Я хотел бы запустить приложение из своей службы, используя класс java processBuilder, однако это приложение имеет аргументы командной строки, которые имеют значения, которые имеют тире в них.
например> приложение -b 8 -e u-law
когда я создаю экземпляр processBuilder и передаю в "-e u-law" как один из аргументов команды, он не может обрабатывать тире в значении аргумента. Есть ли способ обойти это, чтобы заставить его работать?
Вам нужно добавить каждый токен String, то есть каждую команду sub-String, которая разделена пробелом, отдельно в массив параметров команды ProcessBuilder или List. Для этой командной строки,
e.g. >app -b 8 -e u-law
У вас есть 5 жетонов String, приложение, -b, 8, -e и u-law (поскольку у вас нет разрыва между u и тире). Тогда вы могли бы сделать что-то вроде этого:
List<String> list = new ArrayList<>();
list.add("app");
list.add("-b");
list.add("8");
list.add("-e");
list.add("u-law");
ProcessBuilder pBuilder = new ProcessBuilder(list);
в качестве альтернативы вы можете использовать для этого массив из 5 строк,
String[] commands = {"app", "-b", "8", "-e", "u-law"};
ProcessBuilder pBuilder = new ProcessBuilder(commands);