运行 python cmd 中的文件通过 java- %1 不是有效的 Win32 应用程序

Running python file in cmd through java- %1 is not a valid Win32 application

我正在尝试使用 java 执行 python 代码。我的代码:

public class PyTest {
    public static void main(String[] args) {
        Runtime.getRuntime().exec("python src\gui.py");
    }
}

堆栈跟踪: 线程 "main" java.io.IOException 中的异常:无法 运行 程序 "src\gui.py":CreateProcess 错误=193,%1 不是有效的 Win32 应用程序

我知道,在 64 位机器上使用 32 位版本的解释器执行 python 代码时会出现此错误。但是在我的 64 位机器上只安装了 64 位版本的 python。

命令shell知道如何通过文件扩展名运行文件,所以你需要调用cmd.exe Windows shell程序:

Runtime.getRuntime().exec("cmd.exe /c python src\gui.py");

作为exec says, the preferred way to run commands is ProcessBuilder的javadoc,所以你的代码应该是:

new ProcessBuilder("cmd.exe", "/c", "python", "src\gui.py").start();

您甚至可以更改工作目录:

new ProcessBuilder("cmd.exe", "/c", "python", "gui.py")
        .directory(new File("src"))
        .start();