我需要管文本參數與Apache下議院Exec的(爲好奇推出了命令的標準輸入,命令GPG和參數是密碼密鑰庫; GPG沒有一個說法,明確規定了密碼,只能從stdin接受它)。如何將字符串參數傳遞給使用Apache Commons Exec啓動的可執行文件?
另外,我想這能同時支持Linux和Windows。
在一個shell腳本,我會做
cat mypassphrase|gpg --passphrase-fd
或
type mypassphrase|gpg --passphrase-fd
,但因爲它不是解釋的可執行文件,但內置的命令的命令(CMD類型不工作在Windows上。可執行程序)。
的代碼不工作(由於上述原因)低於。爲此產生一個完整的shell太難看了,我正在尋找一個更優雅的解決方案。不幸的是,該BouncyCastle的圖書館和PGP之間的一些不兼容的問題,所以我不能使用的(很短)的時間我有一個完全程序化的解決方案。
在此先感謝。
CommandLine cmdLine = new CommandLine("type");
cmdLine.addArgument(passphrase);
cmdLine.addArgument("|");
cmdLine.addArgument("gpg");
cmdLine.addArgument("--passphrase-fd");
cmdLine.addArgument("0");
cmdLine.addArgument("--no-default-keyring");
cmdLine.addArgument("--keyring");
cmdLine.addArgument("${publicRingPath}");
cmdLine.addArgument("--secret-keyring");
cmdLine.addArgument("${secretRingPath}");
cmdLine.addArgument("--sign");
cmdLine.addArgument("--encrypt");
cmdLine.addArgument("-r");
cmdLine.addArgument("recipientName");
cmdLine.setSubstitutionMap(map);
DefaultExecutor executor = new DefaultExecutor();
int exitValue = executor.execute(cmdLine);
很不錯的答案!拯救了我的一天! – BetaRide 2012-03-15 07:46:38