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。您必须:
- 运行这个在shell。 IE。该命令将是
/bin/bash
或您使用的任何 shell 并且 jar
命令将是 shell. 的第一个参数
- 自己执行 globbing 并指定 jar 列表
此命令从命令行 运行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。您必须:
- 运行这个在shell。 IE。该命令将是
/bin/bash
或您使用的任何 shell 并且jar
命令将是 shell. 的第一个参数
- 自己执行 globbing 并指定 jar 列表