Директория файла сценария оболочки: /some/location/myShellScript.sh
Свойства-Тип: сценарий оболочки (application / x-shellscript)
EDIT
содержимое сценария оболочки:
#!/bin/bash
export LD_LIBRARY_PATH=`pwd`
echo `pwd`
./someExecutable ../input/cfg/test1.ini
test1.ini генерируется на шаг раньше в коде Java,
он предоставляет настройки для некоторого тестирования, которое выполняется в фоновом режиме. Затем сценарий оболочки заканчивается файлом, который мне нужен для дальнейшей обработки.
/ EDIT
Когда я запускаю этот скрипт оболочки на терминале linux в своем собственном каталоге просто с помощью "./myShellScript.sh", он прекрасно работает ...
Часть моего сценария оболочки должна быть выполнена:
//Do something before
//Shell scripts creates a file
String cmd = /some/location/myShellScript.sh;
ProcessBuilder pb = new ProcessBuilder(cmd);
Process process = pb.start();
int exitValue = process.waitFor();
System.out.println(exitValue);
//Afterwards I am processing the generated file
При запуске моей java-программы в виде исполняемого файла .jar этот процесс не выполняется, а значение exitValue равно 127, но я не знаю почему ...
Я пробовал много вещей, таких как:
- с помощью Runtime для исполнения
- добавление #! / Bin / bash или #! / Bin / sh поверх сценария оболочки
- добавление параметра "sh" к команде процесса в виде строки []
В моем каталоге выполнения я рекурсивно изменил разрешение с помощью chmod 755 -R *, чтобы каждая связанная библиотека, используемая сценарием оболочки, действительно была доступна (в том числе и потому, что я могу просто выполнить ее на терминале).
Я действительно пытался найти правильный ответ в интернете, но мне это не удалось.
И нет , я не могу просто сделать все в Java, скрипт оболочки является обязательным и не может быть заменен в этом случае.
Заранее спасибо за полезные предложения!