2016-08-08 5 views
-1

Я пытаюсь получить список экземпляров моего кластера, для этого я использую ProcessBuilder выполнить команду:PocessBuilder выполнить GlassFish команды

asadmin list-instances --long=true 

, когда я выполнить эту команду из Java в окон это прекрасно работает , но когда я развернуть мое приложение в реальном сервере в Linux я получаю исключение:

Exception = java.io.IOException: Cannot run program "/bin/sh -c 'asadmin list-instances --long=true'": error=2, Aucun fichier ou dossier de ce type

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

Вот мой Java-код:

public String executerCommande() { 
    String line, line2 = ""; 
    try { 
     //Windows command 
     //ProcessBuilder builder = new ProcessBuilder("cmd.exe", "/c", command); 
     //I use this with quots and without quotes 
     //ProcessBuilder builder = new ProcessBuilder("/bin/sh -c asadmin list-instances --long=true"); 
     ProcessBuilder builder = new ProcessBuilder("/bin/sh -c 'asadmin list-instances --long=true'"); 
     builder.redirectErrorStream(true); 
     Process p = builder.start(); 
     BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream())); 
     while (true) { 
      line = r.readLine(); 
      if (line == null) { 
       break; 
      } 
      line2 += r.readLine() + "\n"; 
     } 
    } catch (Exception e) { 
     System.out.println("Exception = " + e); 
    } 
    return line2; 
} 

Спасибо.

ответ

1

Использование Время воспроизведения может помочь

try { 
     String command = "asadmin list-instances --long=true"; 
     Process p = Runtime.getRuntime().exec(command); 
     BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream())); 
     for (String s = br.readLine(); s != null; s = br.readLine()) { 
       System.out.println("line: " + s); 
     } 
     br.close(); 
     p.waitFor(); 
     System.out.println("command executed exited: " + p.exitValue()); 
     p.destroy(); 
    } catch (Exception e) { 
     System.out.println("Exception" + e); 
    } 
+0

Я проверить это в окна, и он не работает: 'Exceptionjava.io.IOException: Не удается запустить программу "asadmin": CreateProcess ошибка = 2, Le Fichier spécifié Est introuvable' –

+0

@YoucefLaidani Фрагмент кода предназначен для запуска команды linux –

+0

, это дает мне эту ошибку: «Exceptionjava.io.IOException: не удается запустить программу« asadmin »: error = 2, Aucun fichier ou dossier de ce type' –

Смежные вопросы