Мое приложение Java Spring требует запуска команды cwebp (https://packages.debian.org/de/sid/libwebp-dev), и все работает нормально в Windows и Mac. Это не работает на Travis CI, хотя кажется, что "which cwebp" работает / не вызывает ошибку.
Если быть точным, мои сервисы пытаются выполнить cwebp -q 82 e83376d1-3e5e-4d35-9e2e-9aaad2976984.jpg -o e83376d1-3e5e-4d35-9e2e-9aaad2976984.webp в /tmp/converter_service. Tmp-dir происходит от System.getProperty("java.io.tmpdir"). Файлы и каталог точно существуют. Пробовал много логировать, не знаю, что еще может помочь. Он всегда терпит неудачу с исключением IO и Error-Code = 2
java.io.IOException: Cannot run program "cwebp" (in directory "/tmp/spring_webp_converter_service"): error=2, No such file or directory
at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1128)
at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1071)
at java.base/java.lang.Runtime.exec(Runtime.java:635)
at java.base/java.lang.Runtime.exec(Runtime.java:459)
Каким-то образом выходные данные журнала говорят мне, что каталог доступен для записи и является исполняемым. Также я определенно могу записать исходный файл (файл для преобразования), и он определенно существует. Все дело в команде exec ..
Выдержка из моего кода:
process = Runtime.getRuntime().exec(execCommand, null, tmpDir);
.travis.yml
language: java
jdk:
- oraclejdk10
before_install:
- sudo apt-get update
- sudo apt-get install -y libwebp-dev
cache:
directories:
- $HOME/.m2
Кто-нибудь знает, как я могу заставить это работать?
После рефакторинга моего кода для лучшей отладки / ведения журнала я обнаружил, что «which» работает (чтобы показать, что что-то работает) и «which cwebp« возвращает »». Следовательно, cwebp не включен в ПУТЬ




Я нашел рабочее решение, чтобы получить cwebp (даже в последней версии!) В путь
before_script:
- wget https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-1.0.0-linux-x86-64.tar.gz
- tar -xzf libwebp-1.0.0-linux-x86-64.tar.gz
- export PATH=$PATH:$PWD/libwebp-1.0.0-linux-x86-64/bin/
Вы не показывали вывод
which cwebp, но легко догадаться, что его нет наPATHв Travis, и вам нужно будет указать полное имя файла.