Java 带星号的 ProcessBuilder 命令

Java ProcessBuilder command with asterisk

此命令从命令行 运行s 成功:

// /home/[user]/testproject/target/dependency/testproj-1.0-SNAPSHOT.jar
~/testproject/target/dependency$ jar -xf *.jar

但是当我尝试通过 ProcessBuilder 运行 相同的命令时,我得到:

java.io.FileNotFoundException: *.jar (No such file or directory)

ProcessBuilder 代码:

ProcessBuilder builder = new ProcessBuilder("jar", "-xf", "*.jar");
builder.directory("/home/[user]/testproject/target/dependency");
Process process = builder.start();
int exitValue = process.waitFor();

如何让它与命令参数中的“*”一起使用?

从命令行 shell 正在执行 globbing,将 *.jar 转换为以 .jar 结尾的实际文件列表。

当通过 ProcessBuilder 运行 时,不涉及 shell。您必须:

  1. 运行这个在shell。 IE。该命令将是 /bin/bash 或您使用的任何 shell 并且 jar 命令将是 shell.
  2. 的第一个参数
  3. 自己执行 globbing 并指定 jar 列表