我正在尝试使用 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。
你的问题表明 Java 的 Runtime.getRuntime().exec() 方法试图直接执行 src\gui.py 文件,而不是通过 Python 解释器来运行它。Windows 将尝试将 src\gui.py 文件本身当作可执行文件运行,这会导致错误 CreateProcess error=193, %1 is not a valid Win32 application,因为 .py 文件不是一个可执行文件。
Runtime.getRuntime().exec()
src\gui.py
CreateProcess error=193, %1 is not a valid Win32 application
.py
要解决此问题,你需要明确指定使用 Python 解释器运行你的脚本。以下是修改后的代码:
import java.io.IOException; public class PyTest { public static void main(String[] args) { try { Process process = Runtime.getRuntime().exec("python src\\gui.py"); process.waitFor(); } catch (IOException | InterruptedException e) { e.printStackTrace(); } } }
"python src\\gui.py"
确保你的系统环境变量中包含了 Python 可执行文件的路径,否则需要使用完整路径,例如:"C:\\Path\\To\\Python\\python.exe src\\gui.py"。
"C:\\Path\\To\\Python\\python.exe src\\gui.py"
处理路径分隔符:
\\
也可以使用正斜杠 /,它在 Windows 和 Unix 系统上都能被正确解析:"python src/gui.py"。
/
"python src/gui.py"
等待进程完成:
process.waitFor()
如果脚本需要输出或调试信息,可以通过 Process 的输入输出流来捕获:
Process
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class PyTest { public static void main(String[] args) { try { Process process = Runtime.getRuntime().exec("python src\\gui.py"); // 读取脚本的标准输出 BufferedReader stdInput = new BufferedReader(new InputStreamReader(process.getInputStream())); // 读取脚本的错误输出 BufferedReader stdError = new BufferedReader(new InputStreamReader(process.getErrorStream())); String line; System.out.println("Standard Output:"); while ((line = stdInput.readLine()) != null) { System.out.println(line); } System.out.println("Error Output:"); while ((line = stdError.readLine()) != null) { System.err.println(line); } process.waitFor(); } catch (IOException | InterruptedException e) { e.printStackTrace(); } } }
检查 Python 是否已安装: 在命令提示符中运行 python --version 或 python3 --version,确保 Python 已安装并且路径正确。
python --version
python3 --version
检查脚本路径: 确保 src\gui.py 是正确的路径,并且文件存在。
权限问题: 确保你有权限执行该文件和访问 Python 解释器。
通过这些调整,应该可以成功从 Java 程序中运行 Python 脚本。