2013-09-08 5 views
0

я хочу, чтобы выполнить этот сценарий оболочки:Java не выполнит мой сценарий оболочки

export.run

cd ./AndroidExport/ 
ant release 

с этим Java код:

 ..... 
     Runtime shell = Runtime.getRuntime(); 
     Process prozess = null; 
     String cmd = "sh ./export/android/export.run"; 
     try { 
      prozess = shell.exec(cmd); 

     } catch (IOException ioe) { 
     } 
     BufferedReader in = new BufferedReader(
      new InputStreamReader(prozess.getInputStream())); 
     String line; 

    while ((line = in.readLine()) != null) { 
    System.out.println(line); 
    } 
    ..... 

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

Buildfile: /home/myhome/NetBeansProjects/ITGEditor/export/android/AndroidExport /build.xml 

    -set-mode-check: 

    -set-release-mode: 
    [echo] ************************************************* 
    [echo] **** Android Manifest has debuggable=true **** 
    [echo] **** Doing DEBUG packaging with RELEASE keys **** 
    [echo] ************************************************* 

и многие другие линии, но когда я выполнить его с Явы, он wan't скомпилировать его и консоль Java только напечатать первую строку:

Buildfile: /home/myhome/NetBeansProjects/ITGEditor/export/android/AndroidExport /build.xml 

Где проблема? Спасибо!

+0

Посмотрите на [это] (http://stackoverflow.com/questions/8149828/read-the-output-from-java- exec) вопрос. Использует 'ProcessBuilder' и перенаправляет стандартную ошибку на стандартный вывод, возможно, это также поможет вам. – Katona

ответ

0

Попробуйте добавить -l вариант вашей команды оболочки:

 String cmd = "sh -l ./export/android/export.run";