2014-02-03 4 views

ответ

3

Вместо запуска инструмента командной строки непосредственно из приложения Java рассмотрите возможность использования Git API для Java, например JavaGit. cookbook имеет примеры, за которыми вы можете следовать.

+0

Спасибо так много. Теперь я пытаюсь решить проблему с помощью «020100: невозможно запустить подпроцесс». Не могли бы вы дать мне совет, почему это может произойти? – cadmy

+0

Мне пришлось добавить git-путь в системную среду. Я понял. Проблема решена. Thx – cadmy

2

sh.exe не Git, это командная оболочка, распространяемая вместе с Git. Вы хотите запустить Git напрямую, например. как это:

String[] command = {"C:\\Program Files (x86)\\Git\\bin\\git.exe", 
        "add", 
        "some-file-to-add"}; 
Runtime.getRuntime().exec(command); 

Но так как вы пишете в Java я предлагаю вам взглянуть на JGit, родной библиотеки Java Git.

1

код, который я должен быть чем-то вроде этого:

public void gitCommands() throws IOException { 

    // Build command 
    List<String> commands = new ArrayList<String>(); 
    commands.add("/bin/bash"); 
    commands.add("-c"); 
    commands.add("git add .");  

    StringBuilder out = new StringBuilder(); 

    ProcessBuilder pb = new ProcessBuilder(commands); 
    pb.redirectErrorStream(true); 
    process process = pb.start(); 


    //EDIT: 
    // get Exit Status 
    process.waitFor(); 


    //go for next commands 
    ..... 

} 
+0

Лучше ждать завершения процесса, вместо того чтобы спать в течение произвольной продолжительности. Кроме того, остерегайтесь опечаток в этом примере. Это не сработает. –

+0

спасибо, я думаю, лучше использовать process.waitFor(), не так ли? – molavec

+0

Да. Существует очень мало законных применений sleep(). –

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