1

私のアプリケーションでは、SUMO (特定のルートのトラフィックをシミュレートするアプリケーション) を使用しています。

このプログラムを適切なパラメーターで開始すると、出力が生成されます。ただし、このシミュレーションの開始は、コマンド ラインから行う必要があります。だから私はprocesBuilderでこれを解決しようと思ったが、これはうまくいかなかった。多くの人がこのprocesBuilderに問題を抱えているのを見つけましたが、コマンドラインを実行する方法を読んでも理解できませんでした。

実行する必要があるコマンドは次のとおりです。

"sumo -c \"" + path + FILENAME_CONFIG + "\" --netstate-dump " + ouputPath"

Sumo は私のデスクトップにあります。

"C:\Users\Samee\Desktop\SUMO\sumo-0.17.0\bin"

上記の情報をbatファイルに入れてbatファイルを実行することで、この問題を解決しました。(Cd ..でナビゲートし、パスを設定している間。batファイルを実行した方法:

Process rt = Runtime.getRuntime().exec("cmd /c start " + generator.getPath() + Generator.FILENAME_BAT);

しかし、シミュレーションがいつシミュレーションを停止したかを知る必要があります。これは で解決できprocesBuilderますか?

お気に入り:

ProcessBuilder builder = new ProcessBuilder("sumo -c \"" + path + FILENAME_CONFIG + "\" --netstate-dump " + ouputPath); 

ProcessBuilder の実行が完了したかどうかはどうすればわかりますか?

4

3 に答える 3

0

以下のコードを使用して、コマンドライン引数をプロセスに提供します。Sting リストを提供します。Process Builder には、提供されたリストから引数を解析する機能があります。

final List<String> commands = new ArrayList<String>();                

commands.add("sumo");//commands.add("C:\Users\Samee\Desktop\SUMO\sumo-0.17.0\bin\sumo");
commands.add(" -c "); 
commands.add(path);
commands.add(FILENAME_CONFIG);
commands.add("--netstate-dump");
commands.add(ouputPath);
ProcessBuilder pb = new ProcessBuilder(commands);
于 2013-05-25T13:26:53.767 に答える
0

ProcessBuilder各パラメータが個別に提供されることを期待していますString

ProcessBuilder builder = new ProcessBuilder(
    "sumo.exe", 
    "-c", 
    path + FILENAME_CONFIG + "\", 
    "--netstate-dump", 
    ouputPath); 

更新しました

コマンド名はsumo.exe. sumo.exeOS の検索パス内にない限り、OS はそれを実行できません。

代わりに、絶対パスを指定する必要がありますC:\\Users\\Samee\\Desktop\\SUMO\\sumo-0.17.0\\bin\\sumo.exe

于 2013-05-25T13:06:40.353 に答える