2017-02-17 14 views
1

Что я хочу сделать: сначала зайдите в какой-то каталог и запустите мой сервер в том же каталоге, что мне нужно использовать cd directory path, но я прочитал предыдущие потоки, и я получил это Я не могу использовать команду cd, так как это в основном системный вызов, а не команду вроде ls.Как перейти в конкретный каталог (cd) и выполнить команду bash (сервер python) в ней через java?

Моя единственная цель - как-то войти в мой желаемый каталог, выбранный Directorychooser и начать python -m SimpleHTTPServer. Я пробовал все возможные ответы, например, используя sh -c и все другие решения, которые задавали вопрос, например, как использовать команду cd в java. Возможно ли это без использования cd. У меня также есть адрес, выбранный directorychooser в строковый адрес. Также как выполнить любую другую команду в этом каталоге. Я не уверен, что Run.exec или runtime.exec все еще могут помочь здесь, поскольку он не делает CD, который я пробовал!

Предыдущие ответы на вопросы не объясняют, как использовать processbuilder и другие вещи, Любая помощь оценивается.

Пытались эти, а также -

Runtime.getRuntime().exec(sh -c 'cd /path/to/dir && ProgToExecute 

ответ

1

Да, это возможно, я тоже застрял в одной и той же проблемы, и я не мог сделать cd в любом месте и это решение, как я ее решил .Вы можете добиться того, что вы хотите сделать с ProcessBuilder. (Runtime.exec() не помогло мне там, а также, как это было предложено ранее ответы на StackOverflow) Вот как вы можете достичь его:

  • Построить процесс
  • задать путь
  • Запустить процесс

В коде:

ProcessBuilder pbuild = new ProcessBuilder(“command”); //split into number of tokens like following example 

В вашем случае это 3, как это:

ProcessBuilder pbuild = new ProcessBuilder("python" , "-m", "SimpleHTTPServer"); 

Теперь указываем путь, где процесс должен быть выполнен т.е. вы косвенно выполняет cd directory-path здесь

pbuild.directory(new File(address)); 

(Вы сказали, что ваш путь хранится в адресе, я предполагаю, так)

Теперь начать процесс

Process proc = pbuild.start(); 

сДЕЛАНО! Скомпилируйте и запустите. Команда будет выполнена с cd.

+1

Большое вам спасибо .. такой быстрый ответ .. я попробую этот –

+0

@nikhilgawande это сработало? – minigeek

+0

да, это сработало, спасибо :) :) –