2015-01-02 6 views
2

Iam, используя следующий код java для выполнения команд bash, при попытке скопировать файлы функция возвращает ненулевое значение, но iam может создавать файлы. Командакоманды bash с использованием java process builder для копирования файла

копии: cp demo.txt /shared

выхода: 127

создать командный файл: echo 'sample text' > demo.txt

выхода является: 0

public static int run(final String command) 
{ 
    String[] finalCommand; 
    Process process=null; 
    int temp=0; 

     finalCommand = new String[3]; 
     finalCommand[0] = "bash";//"/usr/bin/ksh"; 
     finalCommand[1] = "-c"; 
     finalCommand[2] = command; 

try { 
    final ProcessBuilder processBuilder = new ProcessBuilder(finalCommand); 
    processBuilder.redirectErrorStream(true); 
    process = processBuilder.start(); 
    temp=process.waitFor(); 
    } 
    catch (IOException e) 
    { 
    System.out.println(e.getMessage()); 
    } 
    catch (InterruptedException e) { 
    System.out.println(e.getMessage()); 
    } 
    return temp; 
} 

пожалуйста, помогите

+2

У вас есть папка/общий доступ и у вас есть разрешение на запись на/shared? – SMA

+0

Печать stdout и посмотреть, какую ошибку вы получаете – anubhava

+0

, когда вы пытаетесь использовать 'cp demo.txt/shared' из shell, это работает? – bachr

ответ

0

Одной из возможностей для cp failing и echo работает из-за того, что cp является внешней командой и эхо встроенной командой.

Внешняя команда может быть найдена только по имени файла, если переменная среды PATH установлена ​​и экспортирована.

Но в такой ситуации, никогда не полагаться на PATH - использовать полный путь к файлу:

String command = "/bin/cp demo.txt /shared"; 

Также: Есть ли у вас разрешение на запись в/совместно?