10

複数のパラメーターを processBuilder に渡し、パラメーターをスペースで区切って渡したいと思います。

コマンドは次のとおりです。

String[] command_ary = {dir+"library/crc"," -s ", fileName," ",addressRanges};

「fcrc」の後と「-p」の後、「filename」と「addressRange」の間にスペースを入れる必要があります。

ありがとうございました

4

3 に答える 3

25

スペースを含める必要はありません。ProcessBuilder がそれを処理します。スペースなしで、引数を 1 つずつ渡します。

ProcessBuilder pb = new ProcessBuilder(
                         dir + "library/crc",
                         "-s",
                         fileName,
                         addressRanges);
于 2013-06-12T09:45:04.750 に答える
13

コマンドラインでは、最初の引数、2 番目の引数などを知る必要があるため、引数の間にスペースが必要です。ただし、 を使用するProcessBuilderと、配列を渡すことができるため、引数を区別するためにこれらのスペースを追加する必要はありません。ProcessBuilder はexec、いくつかのチェックの後、コマンド配列を に直接渡します。例えば、

private static final String JAVA_CMD = "java";
private static final String CP = "-cp";

private static final String CLASS_PATH = "../bin";
private static final String PROG = "yr12.m07.b.Test";
private static final String[] CMD_ARRAY = { JAVA_CMD, CP, CLASS_PATH, PROG };
ProcessBuilder processBuilder = new ProcessBuilder(CMD_ARRAY);

上記のコードは完全に機能します。

さらに、使用できます

Runtime.getRuntime().exec("java -cp C:/testt Test");

しかし、ProcessBuilder を使用する方が便利です。理由の 1 つは、引数にスペースが含まれている場合、Runtime.getRuntime().exec()likejava -cp C:/testt \"argument with space\"で引用符を渡す必要があるためですが、ProcessBuilder を使用するとスペースを取り除くことができます。

ProcessBuilder processBuilder = new ProcessBuilder("command", "The first argument", "TheSecondWithoutSpace");
于 2013-06-12T09:46:33.107 に答える