我正在尝试编写一个程序,必须在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);
你能解释我,我想念的是什么。谢谢你。 祝福安德烈
答案 0 :(得分:1)
您错过了流重定向>
是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"
。我个人更喜欢这个解决方案。