Java 运行时 .exec() 不会打开可执行文件

标签 java

我正在尝试使用运行时和进程执行另一个文件

try
{
Runtime run =   Runtime.getRuntime();
Process pro =   run.exec("C:\\Users\\user\\Desktop\\file.exe");

}
catch(Exception a)
{
    a.printStackTrace();
}

我可以在运行或 cmd 中输入此命令并能够打开文件,但通过我的程序运行它不会打开。没有错误,只是打不开。

最佳答案

为了更好地理解正在发生的事情(这实际上是 Process 类的要求),您需要重定向流程的输入和错误流 - 并且使用 ProcessBuilder 是启动流程的推荐方式:

public static void main(String[] args) throws Exception {
    ProcessBuilder pb = new ProcessBuilder("C:\\Users\\user\\Desktop\\file.exe");
    runProcess(pb)
}

private static void runProcess(ProcessBuilder pb) throws IOException {
    pb.redirectErrorStream(true);
    Process p = pb.start();
    BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
    String line;
    while ((line = reader.readLine()) != null) {
        System.out.println(line);
    }
}

关于Java 运行时 .exec() 不会打开可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24406239/

相关文章:

java - 如何调试有关字符串和 int 的此错误

java - 来自 Composer 的 ZK8 调用详细信息页面 (zul)

java - 你使用哪个Java?在 Server 2016 上安装 JDK 和 JRE (10.0.1);设置 JAVA_HOME 和路径

java - ESAPI 编码器规范化更改查询参数

java - Android 中取消缩短 URL

Java : How can I test save method?

java - 将基于 Java 的配置转换为基于 Spring XML 的配置

java - Scala 图像压缩和优化

java - Android - 从Webview拦截链接

java - 到达EOS后重置Java Socket的InputStream