【问题标题】:Java ProcessBuilder command with asterisk带星号的 Java ProcessBuilder 命令
【发布时间】:2021-01-17 18:39:06
【问题描述】:

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

// /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();

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

【问题讨论】:

    标签: java processbuilder


    【解决方案1】:

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

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

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

    【讨论】:

    • 不,这意味着在单个命令行上为 jar 命令提供了多个 jar 文件名。
    • 感谢您的澄清。 (我之前问过 /bin/bash 是否会产生多个“jar”命令)。
    猜你喜欢
    • 2015-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-11
    相关资源
    最近更新 更多