我的代码:
ProcessBuilder builder = new ProcessBuilder();
builder.command("n");
File file = new File("..");
builder.directory( file );
try {
Process p = builder.start();
} catch (Exception e) {
System.out.println(e);
}
Eclipse说:
java.io.IOException
Cannot run program "n" (in directory ".."): CreateProcess error=2, The system cannot find the file specified
但是文件n.txt就在那里,如果我说:
for(String fileNames : file.list()) System.out.println(fileNames);
已列出:n.txt。
如果我替换" n.txt
"同样的问题用" n
"在源代码中或尝试调用.exe
;
System.out.println(file.getCanonicalPath());
创建
F:\Programme\eclipse\workspaces\test
此:
System.out.println(builder.directory().getAbsolutePath());
创建
F:\Programme\eclipse\workspaces\SimulatorAddOn\SimulatorAddOn\..
代替
ProcessBuilder builder = new ProcessBuilder();
builder.command("n");
与
ProcessBuilder builder = new ProcessBuilder("n");
也不会改变任何事情。
我需要你的帮助。 提前致谢
答案 0 :(得分:1)
我认为系统找不到该文件的原因是directory
方法只设置构建器运行的进程的工作目录(来自Javadocs):
设置此流程构建器的工作目录。随后由此对象启动的子进程的start()方法将使用此作为其工作目录。
所以你需要这个:
builder.command("..\\n.txt");
供系统查找您的文件。这仍然没有做任何有用的事情,你会得到类似于:
的错误Cannot run program "..\n.txt" (in directory ".."): CreateProcess error=193, %1 is not a valid Win32 application
流程构建器需要在您的操作系统中进行有效的应用程序。