Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为ProcessBuilder设置工作目录无效_Java_Runtime_Processbuilder - Fatal编程技术网

Java 为ProcessBuilder设置工作目录无效

Java 为ProcessBuilder设置工作目录无效,java,runtime,processbuilder,Java,Runtime,Processbuilder,我正在尝试使用ProcessBuilder运行一个名为test.pdf的文件,该文件位于C:/Software/中。下面是我的代码 public static void main(String[] args) throws IOException { ProcessBuilder pb = new ProcessBuilder("test.pdf"); pb.directory(new File("C:/Software/")); pb.s

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

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
线程“main”java.io.IOException中的异常:无法运行程序“test.pdf”(在目录“C:\Software”中):CreateProcess error=2,系统找不到指定的文件 位于java.lang.ProcessBuilder.start(未知源) 位于com.test.test.main(test.java:12) 原因:java.io.IOException:CreateProcess error=2,系统找不到指定的文件 在java.lang.ProcessImpl.create(本机方法) 位于java.lang.ProcessImpl。(未知源) 位于java.lang.ProcessImpl.start(未知源) ... 还有两个 我在stackoverflow中检查了这个线程。但是没有任何运气。有人能帮忙吗?谢谢使用下面的代码:

        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();
String fileToOpen=“test.pdf”;
List命令=new ArrayList();
add(“rundll32.exe”);
add(“url.dll,FileProtocolHandler”);
添加命令(fileToOpen);
ProcessBuilder=新的ProcessBuilder();
builder.directory(新文件(“C://Software/”);
生成器命令(command);
builder.start();
它将打开您的pdf。

如果要打开同一目录中的其他文件,只需更改文件名。

谢谢您的回答。但我的意图是将当前工作目录更改为其他目录,以便可以从该目录执行一些命令。这就是为什么我使用ProcessBuilder.updated回答使用ProcessBuilder打开pdf。