Java系统在尝试执行时找不到指定的文件

时间:2020-05-07 14:23:12

标签: java file directory

我想在目录中执行一系列命令。当我在命令行中按cd C:/Users/Lennart/sciebo/Semster 2/Info/RepoCreator/Abgabe 4时,它可以正常工作。 但是当我执行下面的代码时,我得到了FileNotFoundException,因为“系统找不到指定的文件”。

    Runtime.getRuntime().exec(getCMDs());

    ...

    private static String[] getCMDs() {
        String cd = "cd C:/Users/Lennart/sciebo/Semster 2/Info/RepoCreator/Abgabe " + index;
//      String cd = "cd " + path + "/Abgabe " + index;
        String init = "git init";
        String add = "git add .";
        String commit = "git commit -m \"Inital commit\"";

        return new String[] {cd, init, add, commit};
    }

我尝试使用Runtime.getRuntime().exec(getCMDs(), null, file)进行必要的更改。文件为File file = new File("C:/Users/Lennart/sciebo/Semster 2/Info/RepoCreator/Abgabe 4");,加载文件不是问题,System.out.println(file.exists());也不是问题。是正确的,但是执行数组会导致相同的错误。

谢谢

编辑:

是的,我如上所述尝试了重载方法。这是代码:

File file = new File(path + "/RepoCreator/Abgabe 4");
        System.out.println(file.exists());
        try {
            Runtime.getRuntime().exec(getCMDs(), null, file);
...

    private static String[] getCMDs() {
        String init = "git init";
        String add = "git add .";
        String commit = "git commit -m \"Inital commit\"";

        return new String[] {init, add, commit};
    }

不幸的是,这没有什么不同。

3 个答案:

答案 0 :(得分:1)

您似乎正在尝试在指定目录中执行git命令。

您可以尝试使用exec方法的重载版本:

public Process exec(String[] cmdarray,
           String[] envp,
           File dir)

这是一个example on SO(下面的代码段)

Process process2=Runtime.getRuntime().exec("myfile",
    null, new File("/data/data/my-package/files"));

编辑:使用此getCMDs()方法时,请再次在cd中省略exec()命令。

return new String[] {"git","init"};

,然后使用其参数执行下一个命令。

我认为我们需要将每个参数作为一个单独的数组元素传递,因为在执行notepad myfile.txt时,我必须这样做。

String st[] = { "notepad", "myfile.txt"};
Process p = Runtime.getRuntime().exec(st,null,new File("D:/test dir/"));

所以您也可以做类似的事情

String st[] = {"git","init"}

请参阅以下gist

答案 1 :(得分:0)

我不知道您是否注意到了这一点,但是您缺少最后一个字母“ 4”-> “ cd C:/ Users / Lennart / sciebo / Semster 2 / Info / RepoCreator / Abgabe 4”

如果只是拼写错误,也许您可​​以尝试使用双杠,例如:

 C:\\Users\\Lennart\\...\\

答案 2 :(得分:0)

您是否不必转义斜杠字符?