无法在 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/
我的 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/