Я борюсь с ошибкой пробелов в методе exec Java Runtime. Вот что уникально в этой проблеме: команда, которую я пытаюсь выполнить, представляет собой входящую строку, может содержать или не содержать пробелы и не обязательно в каком-либо конкретном формате. В любом случае, мне нужно его выполнить. Если нет пробелов, я в порядке; если есть пробелы, я не так хорош.
Как объяснить оба обстоятельства?
Бонусная информация без дополнительной оплаты: кажется, что одна из больших проблем заключается в том, что я пытаюсь вызвать исполняемый файл в c:\program files\blablabla... и кажется, что exec разделяется на пробел после 'c:\program' . Я уверен, что с параметрами возникнут и другие проблемы.
Вот более конкретный пример строк, которые я могу получить. Это должно прояснить некоторую путаницу:
- c:\someApp\someapp.exe
- c:\someApp\someapp.exe -someParam=foo
- c:\program files\someapp\someapp.exe
- c:\program files\someapp\someapp.exe -someParam=bar
Первый работает нормально, потому что в нем нет пробелов. Со вторым даже все в порядке, потому что оно разбивается на пространство и использует первое как команду, а второе как параметр. В третьем и четвертом примерах, разделенных первым пробелом, в качестве параметров используются «C:\program» и команда «files...» и (в случае четвертой строки) «-someParam=bar».
for (int i = 0; i < argarray.length; i++) { cmdargs[i+1] = argarray[i]; }
можно записать какSystem.arraycopy(argarray, 0, cmdargs, 1, argarray.length);
31.12.2010