Запуск оболочки или системная команда в JAVA - PullRequest
0 голосов
/ 25 августа 2011
private void myFunction(String userName){
    String fileName = this.generateFile(userName);
    String[] command = new String[4];
    command[0] = "cmd";
    command[1] = "/C";
    command[2] = "dir";
    command[3] = "7za a "+ userName+".7z  "+ fileName +" -p"+this.password;
    try {  
        Process p = Runtime.getRuntime().exec(command);
        BufferedReader stdInput = new BufferedReader(new
        InputStreamReader(p.getInputStream()));

        BufferedReader stdError = new BufferedReader(new
        InputStreamReader(p.getErrorStream()));

        while ((s = stdError.readLine()) != null) {
        System.out.println(s);
        }

        ProcessBuilder proc = new ProcessBuilder(command[3]);
        proc.start();
    } catch(Exception e) {  
        System.out.println(e.toString());  
        e.printStackTrace();  
    }  
}

Я пробовал оба способа запуска командной строки в JAVA.Никто из них не работал.Может ли кто-нибудь просветить меня о том, что я делаю неправильно.Я пытался в течение 3 часов, но безуспешно: (

Я получаю эту ошибку Файл не найден java.io.IOException: Невозможно запустить программу "команда"

Та же команда при запуске из cmd, это работает. Я использую Windows ..

Пожалуйста, помогите. Спасибо!

Ответы [ 3 ]

3 голосов
/ 15 сентября 2011

С риском повторения, я скажу это снова: java.lang.ProcessBuilder намного лучший вариант

3 голосов
/ 25 августа 2011

Попробуйте это:

final Runtime rt = Runtime.getRuntime();
rt.exec(your command line here as a single String);
0 голосов
/ 25 августа 2011

Ваша команда не находится ни в одном из каталогов в переменной PATH.И это, вероятно, не в «текущем рабочем каталоге» вашего процесса программирования Java.Либо правильно установите PATH, либо укажите полный абсолютный путь к команде, которую вы хотите выполнить.

...