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

标签 java python runtime

我正在尝试使用 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 error=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的javadoc说,运行命令的首选方式是 ProcessBuilder ,所以你的代码应该是:

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

您甚至可以使用以下命令更改工作目录:

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

关于java - 通过 java-%1 在 cmd 中运行 python 文件不是有效的 Win32 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56134670/

相关文章:

java - 使用 c3p0 时 MySQL Hibernate 连接问题

java - 从解析对象查询回调返回对象数据

python正则表达式匹配多行预处理器宏

python - 根据特定列的条件将一组行的数据帧值分配给另一组行

基于 Python 文本的游戏房间到房间的移动

c# - 我无法修改 app.config 文件

java - 图像的永久位置?

java - 为什么我们必须为不抛出异常的方法处理异常?

c++ - 在 Qt 上,如何在运行时更改工具栏中某个 Action 的图标?

linux - 查看我的程序在终端中使用了多少内存