Как выполнить файл, используя Java Runtime - PullRequest
3 голосов
/ 01 декабря 2011

Я пытаюсь выполнить простой командный файл из Java, используя Runtime.getRuntime (). Exec (команда);но, столкнувшись с проблемами, ниже приведен мой фрагмент кода

public class Path {
        public static void main(String args[]){
            String[] command = new String[3];
            command[0]="cmd";
            command[1]="/C";
            command[2]="D:/alt/a.bat";
    Process p;
        try {
            p = Runtime.getRuntime().exec(command);
            BufferedReader stdInput = new BufferedReader(new InputStreamReader(
                    p.getInputStream()));
            BufferedReader stdError = new BufferedReader(new InputStreamReader(
                    p.getErrorStream()));
            String s = null;
            while ((s = stdInput.readLine()) != null) {
                System.out.println(s);
            }
            while ((s = stdError.readLine()) != null) {
                System.out.println(s);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

, и пакет a.bat содержит тест ant -f runme.xml, а файл runme.xml находится в физическом расположении D: / alt с цельютест, пока все хорошо, но когда я пытаюсь выполнить приведенный выше Java-код, ниже вывод

D:\RCPStack\Path>ant -f runme.xml test  Buildfile: runme.xml does not
exist! Build failed

, когда я выполняю вручную, все работает нормально, похоже, проблема в том, что код ниже - вручнуювывод выполнения enter image description here

как справиться с этим (я не знаю, является ли код неправильным) и обработать как лучший метод

Ответы [ 2 ]

3 голосов
/ 01 декабря 2011

Попробуйте использовать метод Runtime.exec(String cmd, String[] envp, File dir) для установки рабочего каталога на D:/alt/.

Это потому, что Ant должен быть выполнен в каталоге, где находится runme.xml, чтобы Ant мог его найти.

0 голосов
/ 02 декабря 2011
p=Runtime.getRuntime().exec("cmd /c ant -f runme.xml test", null, new File("D:/alt"));//works

или

p=Runtime.getRuntime().exec("cmd /c a.bat", null, new File("D:/alt"));//works
...