#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()
orProcessBuilder
.
Ответ №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 строковый литерал должен начинаться с » (двойные кавычки), ваш пример начинается с одинарной кавычки «.