Запуск команд Mac OSX из eclipse с использованием java

Я пытаюсь создать простую java-программу, чтобы отобразить папку ~\Library\ на osx с помощью команд терминала. Насколько я исследовал код для запуска системных команд из java, это Runtime.getRuntime().exec(); и указан как таковой в каждом месте, где я его ищу.

Однако моя программа не работает. Основной метод ниже.

public static void main(String[] args) throws IOException {

    String[] noHide = {"chflags"," " ,"nohidden"," ", "~/Library/"};
    try {
        Runtime.getRuntime().exec(noHide);
        System.out.println("library unhidden");
    } catch (Exception e ) {
        e.printStackTrace();
    }
}

Эта программа не генерирует исключений, компилируется и выполняется нормально, но папка библиотеки просто не будет отображаться. Независимо от того, что я переформатирую строку cmd. Ни один из форматов ниже не работает

String noHide = "chflags nohidden ~/Library";
String[] noHide = {"chflags", "nohidden","~/Library"};
String[] noHide = {"chflags"," " ,"nohidden"," ", "~/Library/"};

Если я удаляю пробелы, они генерируют исключения (ну, а не объекты массива String). Я могу запустить команду (chflags noHidden ~/Library) абсолютно нормально с терминала osx. Кто-нибудь знает, почему?


person pipsqueaker117    schedule 13.08.2012    source источник


Ответы (1)


Вам нужно использовать try и catch, которые у вас есть. Но ваш main должен быть таким:

public static void main(String[] args) {
    String[] noHide = {"chflags", "nohidden","~/Library"};
    try {
        Runtime.getRuntime().exec(noHide);
    } 
    catch (Exception e) {
        }
    }

В принципе, вам не нужно throws IOException. Это сработало для меня, поэтому, если это все еще не работает в вашей программе, может быть большая проблема с тем, как вы что-то настроили.

person Nathan    schedule 13.08.2012