Как запустить скрипт Cygwin из Java - PullRequest
1 голос
/ 08 марта 2012

Я пытаюсь запустить bash-скрипт из Java-программы, которую пишу в windows. Я пытался использовать объект Runtime, чтобы заставить процесс работать, и моя программа компилируется и запускается без исключений, но мой простой тестовый скрипт, который просто создает каталог, не выполняется.

Вот что у меня так далеко:

String cmmd[] = new String[3];
    cmmd[0] = "C:\\cygwin\\bin\\bash.exe";
    cmmd[1] = "cd C:/Users/pro-services/Desktop/projects/github/cygwin";
    cmmd[2] = "bash TEST.sh";

    Runtime rt= Runtime.getRuntime();
    Process proc = rt.exec(cmmd);

Это в основном смесь разных вещей, которые я нашел на форумах в сети, но я думаю, я просто не совсем понимаю, что происходит с классом Process (и у меня есть только базовое представление о классе Runtime ).

Я также нашел это и подключил свой собственный материал туда, где я думал, что он должен идти:

Runtime.getRuntime().exec(new String[]{"C:\\cygwin\\bin\\bash.exe",
                                                    "-c", "c:\\cygwin\\bin\\run.exe -p /bin bash C:\\Users\\pro-services\\Desktop\\projects\\github\\cygwin\\TEST.sh"},
                                      new String[]{"PATH=/cygdrive/c/cygwin/bin"});

Здесь я не уверен, что представляют собой строки "-c" и "-p", но я просто пошел с этим. Сначала выглядело, как будто я мог просто подключить последовательные команды, которые я хочу, чтобы объект Runtime / Process выполнял, по сути, создав «скрипт» для запуска моего скрипта. Но теперь кажется, что это еще не все ...

Сейчас я просто стреляю в темноте, и я пытался понять документацию, но я потерян. Любая помощь будет оценена. Спасибо)))

1 Ответ

0 голосов
/ 09 марта 2012

Не проверено, но я бы подумал:

cmmd[0] = "C:/cygwin/bin/bash.exe";
cmmd[1] = "-c";
cmmd[2] = "cd /cygdrive/c/Users/pro-services/Desktop/projects/github/cygwin && bash TEST.sh";
...