2011-07-08 61 views
-3

我有加密文件調用Runtime.getRuntime()。EXEC()與GPG命令不工作

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

在上述命令GPG命令

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

巴魯shanmukh是值。

該命令是動態準備的,命令已準備就緒。這個命令在命令行被exected但是當這種命令從

Runtime.getRuntime().exec(command); 

正在運行收到錯誤消息 爲用法:GPG [選項] [文件名]

他們是GPG班組長路徑沒有問題或任何事情,因爲如果我刪除單引號的值沒有在命令之間的空間得到正確執行從Java。

只有當我們有空間的價值的問題。那麼它的強制性使用報價的價值,如果我使用它。 commad沒有得到正確執行

我不明白的行爲? 任何一個可以幫助我理解這種行爲

+0

和你的代碼?在哪裏創建要執行的命令(gpg字符串)? – woliveirajr

+0

[如何執行參數命令?]的可能重複(http://stackoverflow.com/questions/7134486/how-to-execute-command-with-parameters) – Raedwald

回答

1

不要使用Runtime().exec(),不創建命令作爲單個字符串。相反,請爲Process構建一個ProcessBuilder,並將每個開關作爲參數傳遞給您的命令。

這裏有一個簡單的例子:

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

PS:正如其他人所指出的,不要再講你的問題,並檢查您想回答你的問題的答案。人們付出一些努力回答。如果你認爲他們有幫助,可以對他們進行投票,或者將他們的答案作爲回答你問題的答案。
祝你好運,歡迎在這裏;)

0

這裏有一個簡單的例子:

工藝過程=新的ProcessBuilder( 「GPG」, 「--foo」, 「-r」 ,「some_file_name」)。start(); int exitStatus = process.waitFor();

對不起,但不解釋你如何傳遞一個單引號字符串作爲參數。 即。通過'巴庫'作爲一個論點。 「'巴庫'」不起作用....

相關問題