Java 为ProcessBuilder设置工作目录无效
我正在尝试使用ProcessBuilder运行一个名为test.pdf的文件,该文件位于C:/Software/中。下面是我的代码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
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。