gpt4 book ai didi

java - 如何检测 Java 中的 ProcessBuilder 是否找不到要执行的文件?

转载 作者:太空宇宙 更新时间:2023-11-04 06:13:38 24 4
gpt4 key购买 nike

我有这部分代码,应该在 Windows 上启动 msg.exe 子进程:

    ProcessBuilder pb = new ProcessBuilder("msg.exe");
try {
proc = pb.start();
} catch (IOException ex) {
jLabel4.setText("Cannot launch message box process");
return;
}

现在我尝试删除/重命名 msg.exe 并且没有抛出异常:catch 子句中的两行都没有执行。如何检测流程构建器是否找不到可供执行的文件?

如果我 try catch FileNotFoundException,它会说这个异常已经被捕获(可能作为 IOException 的一部分)。如果我尝试仅捕获 FileNotFoundException,则需要捕获带有警告的 IOException。

最佳答案

我在黑暗中拍摄的照片:

您的 Java 应用程序目录中有一个名为“msg.exe”的可执行文件,您正尝试从 Java 代码执行该可执行文件。重命名或删除文件时,您期望 new ProcessBuilder("msg.exe").start() 抛出 IOException

这种情况不会发生,因为如果目录中没有名为“msg.exe”的文件,那么它会在您的%PATH%中搜索它,最后在 C:\Windows\System32\ 中找到它。 ,这可能不是您想要的。

可以通过明确声明您尝试执行的文件必须存在于当前目录中来解决此困境:new ProcessBuilder("./msg.exe")

关于java - 如何检测 Java 中的 ProcessBuilder 是否找不到要执行的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28370245/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com