Can';t在Travis CI中使用Java运行exec(“cwebp…”)

Can';t在Travis CI中使用Java运行exec(“cwebp…”),java,exec,travis-ci,Java,Exec,Travis Ci,我的JavaSpring应用程序需要运行cwebp-command(),并且在Windows和Mac上一切正常。它在Travis CI上不起作用,尽管“哪个cwebp”似乎起作用/不会导致错误 确切地说,我的服务试图在/tmp/converter\u服务中执行cwebp-q 82 e83376d1-3e5e-4d35-9e2e-9aaad296984.jpg-o e83376d1-3e5e-4d35-9e2e-9aad2976984.webp。tmp目录来自System.getProperty(

我的JavaSpring应用程序需要运行
cwebp
-command(),并且在Windows和Mac上一切正常。它在Travis CI上不起作用,尽管“哪个cwebp”似乎起作用/不会导致错误

确切地说,我的服务试图在
/tmp/converter\u服务中执行
cwebp-q 82 e83376d1-3e5e-4d35-9e2e-9aaad296984.jpg-o e83376d1-3e5e-4d35-9e2e-9aad2976984.webp
。tmp目录来自
System.getProperty(“java.io.tmpdir”)
。文件和目录确实存在。尝试了很多日志记录,不知道还有什么可以帮助。它总是失败,出现IO异常,错误代码=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);
特拉维斯·伊梅尔先生

language: java

jdk:
  - oraclejdk10

before_install:
  - sudo apt-get update
  - sudo apt-get install -y libwebp-dev

cache:
  directories:
    - $HOME/.m2

有人知道我怎样才能让它工作吗

我找到了一个有效的解决方案来将cwebp(即使是最新版本!)引入path

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/

您没有显示
哪个cwebp
的输出,但简单的猜测是它不在Travis上的
路径上,您需要指定完整的文件名。在重构代码以更好地调试/记录之后,我发现“which which”(显示某个东西工作)和“which cwebp”返回“”。因此,cwebp不在路径上