Как выполнить следующее выражение командной строки из кода Java? - PullRequest
0 голосов
/ 02 октября 2019

Я использую Mac и пытаюсь запустить приведенную ниже команду, используя код Java, чтобы активировать соединение Sauce для подключения к соусной лаборатории

bin/sc -u "username" -k "ACCESS KEY"

Мне нужно запустить это в определенной папке, представьте, что мойпапка находится внутри

/Users/username/Documents/sc-4.5.4-osx

, но я получаю исключение ниже, когда я запускаю код

java.io.IOException: не удается запустить программу "/ Users / имя пользователя / Documents /sc-4.5.4-osx ": ошибка = 13, в доступе отказано

, включая приведенный ниже код

String[] command = { "/Users/username/Documents/sc-4.5.4-osx", "bin/sc -u username -k accesskey" };    
    try {
        Runtime.getRuntime().exec(command);
        System.out.println("tunnel started");
    } catch (IOException e) {
        e.printStackTrace();
    }

1 Ответ

1 голос
/ 02 октября 2019

Вам нужно, чтобы первая строка в массиве команд была самим исполняемым файлом, в то время как каждый дополнительный элемент является аргументом для команды. Как отметил @Gordon Davisson, ожидается, что эта строка [] будет в форме после анализа. Сейчас он пытается запустить каталог, который не будет работать. Попробуйте указать это следующим образом:

String[] command = { "/Users/username/Documents/sc-4.5.4-osx/bin/sc", "-uusername", "-kaccesskey" };

РЕДАКТИРОВАТЬ 1 Добавить дополнительную информацию о аргументах (Спасибо @GordonDavisson)

...