0

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);

私が見逃していることを説明してもらえますか。事前に感謝します。最高の願い アンドレイ

4

1 に答える 1

1

>ストリームのリダイレクトは、ここには存在しないシェルの機能であるという事実を見逃しています。

コマンドの先頭に追加するか、/bin/sh -cjava を使用して出力をリダイレクトできます。

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"これで、コマンド ラインから削除できます。私は個人的にこのソリューションをより気に入っています。

于 2013-06-19T16:12:40.340 に答える