带星号的Java ProcessBuilder命令
此命令从命令行成功运行:带星号的Java ProcessBuilder命令,java,processbuilder,Java,Processbuilder,此命令从命令行成功运行: // /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
// /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正在执行全局处理,将*.jar
转换为实际文件列表,所有文件都以.jar
结尾
通过ProcessBuilder运行时,不涉及shell。您必须:
/bin/bash
或您使用的任何shell,jar
命令将是shell的第一个参数不,这意味着jar命令在单个命令行上提供了多个jar文件名。感谢您的澄清。(我之前问过/bin/bash是否会生成多个“jar”命令)。