запустить команду оболочки из java
Я работаю над приложением, у меня есть проблема с запуском команды оболочки из java-приложения. вот код:
public String execRuntime(String cmd) { Process proc = null; int inBuffer, errBuffer; int result = 0; StringBuffer outputReport = new StringBuffer(); StringBuffer errorBuffer = new StringBuffer(); try { proc = Runtime.getRuntime().exec(cmd); } catch (IOException e) { return ""; } try { response.status = 1; result = proc.waitFor(); } catch (InterruptedException e) { return ""; } if (proc != null && null != proc.getInputStream()) { InputStream is = proc.getInputStream(); InputStream es = proc.getErrorStream(); OutputStream os = proc.getOutputStream(); try { while ((inBuffer = is.read()) != -1) { outputReport.append((char) inBuffer); } while ((errBuffer = es.read()) != -1) { errorBuffer.append((char) errBuffer); } } catch (IOException e) { return ""; } try { is.close(); is = null; es.close(); es = null; os.close(); os = null; } catch (IOException e) { return ""; } proc.destroy(); proc = null; } if (errorBuffer.length() > 0) { logger .error("could not finish execution because of error(s)."); logger.error("*** Error : " + errorBuffer.toString()); return ""; } return outputReport.toString(); }
но когда я пытаюсь выполнить команду exec, например:
/export/home/test/myapp -T "some argument"
myapp читает "some argument"
как два разделенных аргумента. Но я хочу прочитать "some argument"
как только аргумент. когда я непосредственно запускаю эту команду с терминала, она выполняется успешно. Я попробовал '"some argument"'
, ""some argument""
, "some\ argument"
но не работал для меня. как я могу прочитать этот аргумент как один аргумент.
- joda time - добавить будние дни на сегодняшний день
- Вставка текста в существующий файл через Java
- Невозможно использовать Intellij с созданной исходной папкой
- Конфигурация log4j через аргумент (ы) JVM?
- Почему Stream не имеет метода toList ()?
- Возможно ли иметь автозаполнение с использованием jtextfield и Jlist?
- В Java, как мне преобразовать массив байтов в строку шестнадцатеричных цифр, сохраняя ведущие нули?
- форматирование строки в формате валюты в отчете jasper
- Метод обратного эффекта java String.split ()?
- Как перечислять IP-адреса всех разрешенных карт NIC с Java?
- Как создать весеннюю исполняемую банку с maven?
- Преобразуйте double в BigDecimal и установите BigDecimal Precision
- Отправить письмо с помощью java
Я помню, что перегрузка метода exec предоставляет параметр для аргументов отдельно. Вы должны использовать это
Ага. Вот
public Process exec(String[] cmdarray) throws IOException
Просто введите командную строку и все аргументы Отдельные элементы массива String
сначала сделать строку
String cmd = “/ export / home / test / myapp -T \” некоторый аргумент \ “”;
затем запустите cmd в proc