0

次のようにいくつかのパラメーターを設定しながら、exeファイルを実行しようとしています。

myExePath -ini myIniPath -x myConfigFilePath

コマンドラインから実行すると、完全に機能します。しかし、Java コードから実行しようとすると、プロセスが開始されますが、しばらくすると応答しなくなるため、強制的に閉じる必要があります。私はこのJavaコードを使用しています:

    List<String> parameters = new ArrayList<String>();
    parameters.add(myexePath);
    parameters.add("-ini ");
    parameters.add(myIniPath);
    parameters.add("-x ");
    parameters.add(myConfigPath
    ProcessBuilder builder = new ProcessBuilder(parameters);
    Process process = builder.start();

    try {
        process.waitFor();
    } catch (InterruptedException e) {
        System.err.println("Process was interrupted");
    }

私が間違っていることはありますか?

4

3 に答える 3

1

exe は stdout、stderr、stdin を使用しますか? 常にそれらから読み取るか、それらを閉じる必要があります。それらから読み取らない実装とバッファサイズによっては、ブロッキングが発生する可能性があります。

于 2012-01-26T12:19:40.383 に答える
0

最初に への参照を取得する必要があると思いますRuntime

あなたはこれを行うことができます
Runtime.getRuntime().exec(parameters.toString());

パラメータ リストの文字列には、少し書式設定が必要な場合があります。

于 2012-01-26T12:34:23.050 に答える
0

それが役立つかどうかはわかりませんが、なぜスペースを使用するのですか? 例: parameters.add("-x "); それらは必要ありません。

また、すべてのパラメーターを配列に入れ、配列を引数として受け取る ProcessBuilder の別のコンストラクターを使用することもできます。

于 2012-01-26T12:05:02.243 に答える