Java - 使用 ProcessBuilder 目录时系统找不到指定的文件()
Java - The system cannot find the file specified when using ProcessBuilder directory()
我正在尝试 运行 Java 中的一个子进程,同时使用 ProcessBuilder 的 directory() 方法。
但是,每当我使用 directory() 方法时,程序都会失败,提示找不到文件。但是,该文件存在于工作目录中。
Process process = new ProcessBuilder("firefox")
.directory(new File("C:\Program Files\Mozilla Firefox"))
.inheritIO()
.start();
输出:
Could not start server due to java.io.IOException: Cannot run program "firefox" (in directory "C:\Program Files\Mozilla Firefox"): CreateProcess error=2, The system cannot find the file specified
当我忽略 directory() 方法并创建 ProcessBuilder 时:new ProcessBuilder("C:\Program Files\Mozilla Firefox\firefox")
,它工作正常并且 firefox.exe 成功启动。
这发生在 Windows 和 Linux。
我已经尝试了几个版本的启动命令(如 firefox
、firefox.exe
、./firefox
、./firefox.exe
)但没有成功。
想通了
我没有意识到 directory() 方法只为新的子进程设置工作目录,你仍然需要为你想要的可执行文件提供完整路径 运行。
在这种情况下,以下代码可以工作:
Process process = new ProcessBuilder("C:\Program Files\Mozilla Firefox\firefox")
.directory(new File("C:\Program Files\Mozilla Firefox"))
.inheritIO()
.start();
我正在尝试 运行 Java 中的一个子进程,同时使用 ProcessBuilder 的 directory() 方法。 但是,每当我使用 directory() 方法时,程序都会失败,提示找不到文件。但是,该文件存在于工作目录中。
Process process = new ProcessBuilder("firefox")
.directory(new File("C:\Program Files\Mozilla Firefox"))
.inheritIO()
.start();
输出:
Could not start server due to java.io.IOException: Cannot run program "firefox" (in directory "C:\Program Files\Mozilla Firefox"): CreateProcess error=2, The system cannot find the file specified
当我忽略 directory() 方法并创建 ProcessBuilder 时:new ProcessBuilder("C:\Program Files\Mozilla Firefox\firefox")
,它工作正常并且 firefox.exe 成功启动。
这发生在 Windows 和 Linux。
我已经尝试了几个版本的启动命令(如 firefox
、firefox.exe
、./firefox
、./firefox.exe
)但没有成功。
想通了
我没有意识到 directory() 方法只为新的子进程设置工作目录,你仍然需要为你想要的可执行文件提供完整路径 运行。
在这种情况下,以下代码可以工作:
Process process = new ProcessBuilder("C:\Program Files\Mozilla Firefox\firefox")
.directory(new File("C:\Program Files\Mozilla Firefox"))
.inheritIO()
.start();