java.io.IOException: error = 8, ошибка формата Exec при запуске Karaf в контейнере Docker - PullRequest
0 голосов
/ 26 сентября 2019

Я запускаю Karaf в контейнере Docker и сталкиваюсь с этой ошибкой при запуске nginx:

Caused by: java.io.IOException: Cannot run program "/usr/local/apache-karaf/reload-nginx.sh": error=8, Exec format error
         at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048) ~[?:?]
         at java.lang.Runtime.exec(Runtime.java:620) ~[?:?]
         at java.lang.Runtime.exec(Runtime.java:450) ~[?:?]
         at java.lang.Runtime.exec(Runtime.java:347) ~[?:?]
.
.
.
Caused by: java.io.IOException: error=8, Exec format error
         at java.lang.UNIXProcess.forkAndExec(Native Method) ~[?:?]
         at java.lang.UNIXProcess.<init>(UNIXProcess.java:247) ~[?:?]
         at java.lang.ProcessImpl.start(ProcessImpl.java:134) ~[?:?]
         at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029) ~[?:?]
         at java.lang.Runtime.exec(Runtime.java:620) ~[?:?]
         at java.lang.Runtime.exec(Runtime.java:450) ~[?:?]
         at java.lang.Runtime.exec(Runtime.java:347) ~[?:?]

Кто-нибудь видел эту ошибку или другую подобную?Разрешение

1 Ответ

0 голосов
/ 26 сентября 2019

" Ошибка формата Exec " означает, что запускаемая программа не является исполняемой.

Конструктор ProcessBuilder принимает список аргументов следующим образом:

Process p = new ProcessBuilder("myCommand", "myArg").start();

В вашем случае /usr/local/apache-karaf/reload-nginx.sh (который является скриптом, а не исполняемым файлом) кажетсябыть командой, отсюда и ошибка.

Попробуйте установить для команды /bin/bash команду reload-nginx.sh в качестве аргумента:

Process p = new ProcessBuilder("/bin/bash", "/usr/local/apache-karaf/reload-nginx.sh").start();
...