我需要管文本参数与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