设置ProcessBuilder的工作目录不起作用

3

我正在尝试使用ProcessBuilder运行位于C:/Software/的名为test.pdf的文件。以下是我的代码:

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

         ProcessBuilder pb = new ProcessBuilder("test.pdf");
         pb.directory(new File("C:/Software/"));
         pb.start();

    }

我遇到了以下异常:

Exception in thread "main" java.io.IOException: Cannot run program "test.pdf" (in directory "C:\Software"): CreateProcess error=2, The system cannot find the file specified
    at java.lang.ProcessBuilder.start(Unknown Source)
    at com.test.Test.main(Test.java:12)
Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the file specified
    at java.lang.ProcessImpl.create(Native Method)
    at java.lang.ProcessImpl.<init>(Unknown Source)
    at java.lang.ProcessImpl.start(Unknown Source)
    ... 2 more

我查看了stackoverflow上的这个帖子:如何使用ProcessBuilder设置工作目录,但没有成功。有人可以帮忙吗?谢谢。

1个回答

2
请使用以下代码:
        String fileToOpen = "test.pdf";
        List<String> command = new ArrayList<String>();
        command.add("rundll32.exe");
        command.add("url.dll,FileProtocolHandler");
        command.add(fileToOpen);

        ProcessBuilder builder = new ProcessBuilder();
        builder.directory(new File("C://Software//"));
        builder.command(command);

        builder.start();

它将打开您的pdf文件。
如果您想打开同一目录中的其他文件,只需更改文件名即可。


谢谢您的回答。但是我的意图是将当前工作目录更改为其他目录,以便我可以从该目录执行一些命令。这就是我使用ProcessBuilder的原因。 - Aragon
使用ProcessBuilder打开PDF的答案已更新。 - dangi13

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接