当运行一个来自d:而不是c:的程序时,系统找不到指定的路径

The system cannot find the path specified when running a program from d: instead of c:

我在我的 c: 盘上有一个用于测试的文件夹,但我的主要项目在我的 d: 盘上。但是现在我得到了同样的错误,而代码是相同的,经过一些研究我发现这是因为位置。但是有解决办法吗?我知道我可以重新定位我的项目,但必须有一些解决方案。

我注意到的第二件事是在调试时。ProcessBuilder 值中的字符串仅在我使用 clean(netbeans) 时发生变化。这怎么可能。我还是 java 的新手,现在想知道为什么这些东西会这样。

这是我的代码

 public class CmdTest {

    public static void main(String[] args) throws Exception {

        ProcessBuilder builder = new ProcessBuilder("cmd.exe", "/c", "D: && cd program Files\wkhtmltopdf\bin && dir");

        builder.redirectErrorStream(true);
        Process p = builder.start();
        BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));
        String line;
        while (true) {
            line = r.readLine();
            if (line == null) { break; }
            System.out.println(line);
        }
    }

}

解决方法非常简单。

public class CmdTest {

    public static void main(String[] args) throws Exception {

        ProcessBuilder pb = new ProcessBuilder("cmd.exe", "/c", "D: && cd program Files\wkhtmltopdf\bin && dir");

        // Here you need to set the directory in my case D:
        pb=pb.directory(new File("D:\"));
        pb.redirectErrorStream(true);
        Process p = pb.start();
        BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));
        String line;
        while (true) {
            line = r.readLine();
            if (line == null) { break; }
            System.out.println(line);
        }
    }

}