複数のパラメーターを processBuilder に渡し、パラメーターをスペースで区切って渡したいと思います。
コマンドは次のとおりです。
String[] command_ary = {dir+"library/crc"," -s ", fileName," ",addressRanges};
「fcrc」の後と「-p」の後、「filename」と「addressRange」の間にスペースを入れる必要があります。
ありがとうございました
複数のパラメーターを processBuilder に渡し、パラメーターをスペースで区切って渡したいと思います。
コマンドは次のとおりです。
String[] command_ary = {dir+"library/crc"," -s ", fileName," ",addressRanges};
「fcrc」の後と「-p」の後、「filename」と「addressRange」の間にスペースを入れる必要があります。
ありがとうございました
スペースを含める必要はありません。ProcessBuilder がそれを処理します。スペースなしで、引数を 1 つずつ渡します。
ProcessBuilder pb = new ProcessBuilder(
dir + "library/crc",
"-s",
fileName,
addressRanges);
コマンドラインでは、最初の引数、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");