Выполнить команду Unix из Java

#java #shell #unix

#java #оболочка #unix

Вопрос:

В Java как я могу выполнить следующую команду оболочки:

 osmosis --read-xml file="planet-latest.osm" --bounding-polygon file="country.poly" --write-xml file="australia.osm"
  

Я попытался выполнить ее с помощью этого кода:

 Process proc = Runtime.getRuntime().exec("osmosis --read-xml file="planet-latest.osm" --bounding-polygon file="country.poly" --write-xml file="australia.osm"");
InputStream output = proc.getInputStream();
  

но, похоже, что команда Unix не выполняется.

Ответ №1:

Возможно, вам потребуется указать полный путь к osmosis.

Комментарии:

1. Кроме того, не забудьте экранировать двойные кавычки. Или лучше, используйте перегруженный метод exec с массивами для передачи аргументов.

2. Кроме того, я бы порекомендовал ему использовать Commons-Exec вместо Runtime.exec() or ProcessBuilder .

Ответ №2:

Использование среды выполнения является устаревшим способом выполнения команд. Взгляните на ProcessBuilder

Ответ №3:

попробуйте экранировать double «

Process proc = Runtime.getRuntime().exec("osmosis --read-xml file="planet-latest.osm" --bounding-polygon file="country.poly" --write-xml file="australia.osm"")

Комментарии:

1. в Java строковый литерал должен начинаться с » (двойные кавычки), ваш пример начинается с одинарной кавычки «.