【问题标题】:Runtime.getRuntime().exec() with gpg command not workingRuntime.getRuntime().exec() 与 gpg 命令不起作用
【发布时间】:2011-07-08 12:24:11
【问题描述】:

我有加密文件的 gpg 命令

 gpg --batch --yes -o abc.csv.gpg -r 'balu shanmukh' -e A2.java

在上面的命令中

--batch
--yes
-o 
-r and -e are options

balu shanmukh 是价值。

命令是动态准备的,预先准备的命令就是上面的。此命令正在命令行中执行,但是当此命令从

运行时
 Runtime.getRuntime().exec(command);

我收到错误消息 用法:gpg [选项] [文件名]

它们对 gpg 类路径或任何东西都没有问题,因为如果我删除了在命令之间没有空格的值的单引号,那么命令将从 java 中正确执行。

只有当我们的 value 有空间时才会出现问题。那么它必须使用报价作为价值,如果我使用它。 commad 没有正确执行

我不明白这种行为? 谁能帮我理解这种行为

【问题讨论】:

标签: java process runtime exec runtime.exec


【解决方案1】:

不要使用Runtime().exec(),也不要将命令创建为单个字符串。相反,为您的Process 构建一个ProcessBuilder,并将每个开关作为参数传递给您的命令。

这是一个简单的例子:

Process process = new ProcessBuilder("gpg", "--foo", "-r", "some_file_name").start();
int exitStatus  = process.waitFor();

PS:正如其他人所说,请重新审视您的问题,并检查您认为回答问题的答案。人们付出了一些努力来回答。如果您认为他们有帮助,请给他们投票,或检查他们的答案是否回答了您的问题。
祝你好运,欢迎来到这里;)

【讨论】:

    【解决方案2】:

    这是一个简单的例子:

    进程 process = new ProcessBuilder("gpg", "--foo", "-r", "some_file_name").start(); int exitStatus = process.waitFor();

    抱歉,但这并不能解释您如何将单引号字符串作为参数传递。 IE。将“baku”作为参数传递。 “'baku'”不起作用....

    【讨论】:

      猜你喜欢
      • 2014-03-21
      • 1970-01-01
      • 2021-09-14
      • 2014-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多