2016-03-23 2 views
0

Я пытаюсь запустить скрипт с помощью apache-commons-exec, который был реализован с использованием java-аппроксимации для запуска. Этот скрипт выполняется на рабочем сервере (Linux), но мне нужно проверить его в моем локальном хосте, чтобы убедиться, что все работает нормально.Выполнение shell-скрипта с параметрами using apache.commons.exec в Windows

Вот мой код для запуска Cygwin и этот код работает в cmd.exe, но она не работает, когда я пытаюсь запустить его с помощью commons.exec:

OutputStream outputStream = new ByteArrayOutputStream(); 
    DefaultExecutor exec = new DefaultExecutor(); 
    exec.setWatchdog(new ExecuteWatchdog(1000)); 
    PumpStreamHandler streamHandler = new PumpStreamHandler(outputStream); 
    exec.setStreamHandler(streamHandler); 
    CommandLine cmdLine = CommandLine.parse("C:\\cygwin64\\bin\\bash"); 
    cmdLine.addArgument("-c"); 
    cmdLine.addArgument("/cygdrive/c/dev/launch.sh"); 
    int exit = exec.execute(cmdLine); 
    logger.warn("Job exit: " + exit); 

Она возвращает 1 и нет выхода или ошибка журнала:

org.apache.commons.exec.ExecuteException: Process exited with an error: 1 (Exit value: 1) 

Есть что-то не хватает? Как я могу правильно поймать вывод?

+0

... проверить его в среде Linux. У сценария bash может быть бит-бит #!/Bin/bash и липкий uid бит chmod s + u. (Windows cygwin среда запускается с bash --login -i) –

+0

Невозможно поблагодарить вас. – mannuk

ответ

0

Немного догадаться об этом, но может помочь.

Иногда exit code = 1 представляет собой «успех». Однако Apache Commons Exec по умолчанию интерпретирует exit code = 1 как отказ и будет вызывать ExecuteException, если этот скрипт выходит с exit code = 1.

Вы можете сообщить DefaultExecutor, что «exit code = 1 = успех», используя следующий код:

exec.setExitValue(1); 

не может быть причиной, но стоит пойти.

+0

Я проверил все, и я думаю, что проблема в следующем: когда выход равен 1, нет потока вывода (не могу видеть эхо или stderr в моем журнале), тогда как я вижу эхо, когда выход равен 0 – mannuk

 Смежные вопросы

  • Нет связанных вопросов^_^