Java执行Python脚本报错CreateProcess error=193,求问题原因
问题原因及解决方案
问题根源
Windows系统无法直接执行.py后缀的脚本文件,因为它不属于合法的Win32可执行程序。你直接调用test1.py时,系统不知道该用什么程序解析运行这个脚本,因此抛出CreateProcess error=193异常。
解决方法
必须通过Python解释器来执行脚本,把Python可执行文件作为命令主体,脚本路径作为参数传入exec()方法:
1. 基础写法(Python已加入系统环境变量)
如果你的Python已经添加到系统PATH中,可以直接用python或python3命令:
process = Runtime.getRuntime().exec(new String[] {"python", "test1.py"});
针对Python3也可以写成:
process = Runtime.getRuntime().exec(new String[] {"python3", "test1.py"});
2. 指定Python绝对路径(未加入环境变量)
如果Python没在系统PATH里,需要写全Python可执行文件的绝对路径:
process = Runtime.getRuntime().exec(new String[] {"C:\\Python39\\python.exe", "test1.py"});
注意路径中的反斜杠要转义为\\。
额外注意事项
- 如果
test1.py不在Java程序的当前工作目录,要给脚本加上绝对路径,比如"C:\\scripts\\test1.py"。 - 原代码中如果
process创建失败(比如抛出异常),mProcess会是null,后续创建BufferedReader时会触发空指针异常,建议在读取输出前先判断stdout是否为null。
内容的提问来源于stack exchange,提问作者hutonahill
相关产品推荐
相关产品推荐

