wget не найден из скрипта OSX, запускаемого из Java - PullRequest
0 голосов
/ 11 июня 2018

Я написал Java-программу, которая запускает скрипт на моем Mac:

     Runtime rt = Runtime.getRuntime();
     String cmdString = "./load_test.sh";

     System.out.println(cmdString);
     Process pr = rt.exec(cmdString);

     BufferedReader input = new BufferedReader(new InputStreamReader(
                                               pr.getErrorStream()));

     String line = null;
     while ((line = input.readLine()) != null)
     {
        System.out.println(line);
     }

     int exitVal = pr.waitFor(); 

Сценарий load_test делает это:

wget -O/dev/null --load-cookies cookies-$1.txt 'http://demo.mycompany.co.uk/userhome'

Несмотря на то, что я запустил load_test.На моем Mac из разных мест вывод этой программы на Java:

. / pcm_load_test.sh: строка 2: wget: команда не найдена

Итак, кажется, что когда порожденный из Java, wget не может быть вызван из скрипта?

Я думал, что это может быть проблема с доступом пользователя, поэтому я попытался:

 sudo chmod a+rwx /usr/local/bin/wget

, но этоничего не дало.

Есть идеи, почему wget не запускается из скрипта, вызываемого из Java-программы?

1 Ответ

0 голосов
/ 11 июня 2018

Как упомянуто Elliott Frisch и на основе моего собственного опыта запуска сценариев на нескольких ОС через приложение:

При выполнении сценария с помощью кода Java вы должны убедиться, чтокоманду, которую вы пытаетесь выполнить, можно найти.Обычно это требует использования одного из двух вариантов:

  • Использование глобальной переменной пути к среде - при программном запуске сценария ваш код открывает экземпляр оболочки и выполняет ваш сценарий.В новом экземпляре оболочки нет предварительно настроенной глобальной переменной пути к среде, что означает, что вы должны добавить эту конфигурацию в начало вашего скрипта: export PATH=${PATH}:/path/to/your/used/bin
  • Использовать абсолютный путь к вашей команде - просто явно вызовите ее с помощью командыполный путь в вашем скрипте: /usr/local/bin/wget ........

В качестве примечания: в сообщении об ошибке в OP указывается, что команда wget не найдена.Попытка предоставить полные разрешения на чтение / запись / выполнение через chmod, действительно, не будет иметь никакого эффекта, поскольку разрешения не помогают с указанием пути к команде.

Ссылки:

...