複数のパラメーターを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を使用する方が便利です。理由のひとつは、引数にスペースが含まれている場合、_Java -cp C:/testt \"argument with space\"
_のようにRuntime.getRuntime().exec()
で引用符を渡す必要があるためですが、ProcessBuilderを使用するとそれを取り除くことができます。
_ProcessBuilder processBuilder = new ProcessBuilder("command", "The first argument", "TheSecondWithoutSpace");
_