Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Выполнение консольной команды в Mac OS X


Автор: Sanych 1.6.2012, 11:35
Написал инсталятор на IzPack, необходимо было после завершения инсталяции делать ярлык на рабочем столе. Вот кусок кода: 
Код

...
    String[] cmd = {"ln", "-s", "Applications/Sample Installation/temp/1.txt", "./Desktop/"};
    int exitCode = Runtime.getRuntime().exec(cmd).waitFor();
    if (exitCode != 0) {
        throw new IOException("ln signaled an error with exit code " + exitCode);  
    }
...

При запуске инсталятора из терминала все работает отлично, при запуске из Finder'a waitFor() возвращает "1". Вот кусок из Rrocess.getErrorStream():
Код

 ln: ./Desktop/ no such file or directory

Автор: LSD 1.6.2012, 12:37
Запусти терминал, а уже в нем выполни ln. Что-то типа:
Код

String[] cmd = {"bash", "ln", "-s", "Applications/Sample Installation/temp/1.txt", "./Desktop/"};

Автор: Sanych 1.6.2012, 13:28
Цитата(LSD @ 1.6.2012,  12:37)
Запусти терминал, а уже в нем выполни ln. Что-то типа:
Код

String[] cmd = {"bash", "ln", "-s", "Applications/Sample Installation/temp/1.txt", "./Desktop/"};

выполнение с bash'ем в начале -> cannot execute binary file
без баша выполняется.

Автор: Sanych 1.6.2012, 15:02
проблема решена, при запуске из терминала программа запускалась в текущем домашнем каталоге пользователя, в отличии от запуска finder'om

Автор: k0rvin 4.6.2012, 09:03
Никогда так не делайте, для приложений в Mac OS X предназначен каталог Applications

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)