无法在 Travis CI 中使用 Java 运行 exec("cwebp ...")

Can't run exec("cwebp ...") with Java in Travis CI

我的 Java Spring 应用程序需要 运行 cwebp-命令 (https://packages.debian.org/de/sid/libwebp-dev) 并且在 Windows 上一切正常Mac。尽管 "which cwebp" 似乎 work/not 导致错误,但它在 Travis CI 上不起作用。

确切地说,我的服务试图在 /tmp/converter_service 中执行 cwebp -q 82 e83376d1-3e5e-4d35-9e2e-9aaad2976984.jpg -o e83376d1-3e5e-4d35-9e2e-9aaad2976984.webp。 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)

不知何故,日志输出告诉我该目录是可写的并且是可执行的。我也绝对可以写源文件(要转换的文件)并且它确实存在。这都是关于执行命令..

我的代码摘录:

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

有谁知道我如何让它工作?

我找到了将 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/