Используя Java-класс, я пытаюсь запустить бродячий сервер, а затем выполнить скрипт Python, который находится внутри виртуальной коробки (бродяга). Причина, по которой я делаю это таким образом, заключается в том, что мне нужно создавать интеграционные / автоматизированные тесты, которые существуют в проекте, но вне основной базы кода (чтобы мои тесты не запускались в prod). Мне нужно будет отправить пользовательские данные API и веб-служб, а затем запустить приложение через скрипт python для проверки сценариев тестирования.
На данный момент, когда я пытаюсь выполнить последнюю команду, скрипт python, через процесс или сборщик процессов, я получаю следующее:
vagrant up - отлично работает
vagrant ssh - отлично работает
скрипт Python - ошибка:
java.io.IOException: Невозможно запустить «скрипт» программы: ошибка = 2, нет такого файла или каталога
Мой код:
public static void launchCommandlineProcess(String command, String arg) {
String line = null;
ProcessBuilder processBuilder = new ProcessBuilder();
Process process = null;
try {
System.out.println("Executing command line process...");
process = processBuilder.command(command, arg).start();
try {
InputStreamReader inputStreamReader = new
InputStreamReader(process.getInputStream());
final BufferedReader reader = new
BufferedReader(inputStreamReader);
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
reader.close();
}
catch (Exception e) {
e.printStackTrace();
}
}
catch (Exception e) {
e.printStackTrace();
}
finally {
process.destroy();
System.out.println("Destroyed processes");
}
}
После того, как я зашёл на сервер vagrant / virtual box, я не могу выполнить скрипт python. Я пытался найти что-то в этом духе перед публикацией, но не смог найти ничего полезного.
Любой совет?
Я пытался использовать process.Runtime.getRuntime.exec (), а также компоновщик процессов. Я попытался поместить свои команды в массив String и выполнить их все подряд. Я попытался создать новый процесс в том же методе, который выполняет скрипт Python сразу после выполнения ssh и до того, как процесс ssh будет уничтожен. Неудачно.
Любой совет с благодарностью.
Спасибо.
Примечание. Эти команды отлично работают с терминала, вне кода Java.