Java and Runtime.getRuntime().exec(String cmd)



我想写一个程序,必须在Linux终端上执行相同的代码:

openssl req -passout pass:abc -subj /C=US/ST=IL/L=Chicago/O=IBM          Corporation/OU=IBM Software Group/CN=John Smith/emailAddress=smith@abc.ibm.com -new > johnsmith.cert.csr

在终端中可以正常工作,但在Java中却不行。我试过这样做,但没有结果。

String[] cmd = { "openssl", "req -passout pass:abc -subj", "/C=US/ST=IL/L=Chicago/O=IBM          Corporation/OU=IBM Software Group/CN=John Smith/emailAddress=smith@abc.ibm.com", "-new > johnsmith.cert.csr" };
Runtime.getRuntime().exec(cmd);

你能给我解释一下我错过了什么吗?祝福Andrey

您忽略了一个事实,即流重定向>是shell的一个功能,在这里不存在。

您可以在命令前加上/bin/sh -c或使用java:

重定向输出。
Process proc = Runtime.getRuntime().exec(cmd);
InputStream in = proc.setOutputStream();
OutputStream out = new FileOutputStream("johnsmith.cert.csr");
int b;
while( (b = in.read()) != -1) {
   out.write(b);
}
out.flush();
out.close();

现在你可以从你的命令行中删除"> johnsmith.cert.csr"。我个人更喜欢这个解决方案。

相关内容

  • 没有找到相关文章

最新更新