2

openSSLフォルダのbinディレクトリでコマンドを実行したい。C:\OpenSSL-Win32\bin\ ディレクトリからコマンドを実行したい。そして、次のコマンドを実行する必要があります: Openssl dgst -sha1 -sign PrivateKey.pem -out Record1.sha1 Message.txt

私のコードは次のとおりです。

import java.io.*;  
public class TestExec {  
    public static void main(String[] args) {  
        try {  
            File directory1 = new File("C:\\OpenSSL-Win32\\bin\\");
            System.out.println(directory1.toString());
            String[] commandArray = {"Openssl dgst -sha1 -sign PrivateKey.pem -out Record1.sha1 Message.txt"};
            Process p2 = Runtime.getRuntime().exec(commandArray, null, directory1);

    } catch (IOException e) {  
        e.printStackTrace();  
    }  
}  
} 

次の IOException が発生します。

java.io.IOException: Cannot run program "Openssl dgst -sha1 -sign PrivateKey.pem -out Record1.sha1 Message.txt" (in directory "C:\OpenSSL-Win32\bin"): CreateProcess error=2, The system cannot find the file specified
    at java.lang.ProcessBuilder.start(Unknown Source)
    at java.lang.Runtime.exec(Unknown Source)
    at package1.TestExec.main(TestExec.java:10)
Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the file specified
    at java.lang.ProcessImpl.create(Native Method)
    at java.lang.ProcessImpl.<init>(Unknown Source)
    at java.lang.ProcessImpl.start(Unknown Source)
    ... 3 more

この問題の解決にご協力ください。ありがとうございます。

4

1 に答える 1

0

作業ディレクトリを設定しても、Java がそのディレクトリで実行可能ファイルを探すわけではありません。実行可能ファイルの現在のディレクトリに設定されるだけです。

PATH 環境変数に関する Windows での正確な動作はわかりませんが、現在の設定は...

とにかく、代わりにこれを使用してみます

String[] commandArray = {"C:\\OpenSSL-Win32\\bin\\Openssl\\Openssl dgst -sha1 -sign PrivateKey.pem -out Record1.sha1 Message.txt"};
于 2012-09-13T07:18:57.950 に答える