运行时.getRuntime()。exec()与gpg命令无法正常工作

时间:2011-07-08 12:24:11

标签: java process runtime exec runtime.exec

我有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);

收到错误消息 as 用法:gpg [options] [filename]

他们对gpg类路径或其他任何问题没有问题,因为如果我删除了没有空格的值的单引号,则从java中正确执行该命令。

当我们有价值空间时,只有问题。然后它必须使用引用值,如果我使用它。 commad没有得到正确执行

我不明白这种行为? 任何人都可以帮助我理解这种行为

2 个答案:

答案 0 :(得分:1)

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

这是一个简单的例子:

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

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

答案 1 :(得分:0)

  
    
      

这是一个简单的例子:

    
         

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

  

很抱歉,但这并不能解释如何将单引号字符串作为参数传递。 即。通过'巴库'作为论据。 “'巴库'”不起作用......