在Java代码中调用Python脚本 (runtime.exec)

4 投票
1 回答
7609 浏览
提问于 2025-04-17 02:27

我正在尝试在Java中运行一个Python脚本,但遇到了一些问题。
我使用下面的命令来执行位于我的Java项目中的一个名为“python”的文件夹里的Python脚本:

Runtime r = Runtime.getRuntime();
Process p = r.exec("cmd /c python python\\test.py");

这个脚本应该在一个文本文件中写入一些内容,并在屏幕上显示出来。但是通过r.exec执行后,这个脚本没有正常工作(既没有记录任何内容,也没有在屏幕上显示,p.waitFor()返回1,表示执行不成功),但在终端中运行是可以的。我还尝试把Python脚本放在项目的根文件夹中,看看是不是路径错误导致的问题,但也没有成功。
我该怎么才能让它正常工作呢?

我的操作系统是Windows 7,我尝试运行的Python脚本是(test.py):

import sys
import os

def main():
    f = open('python/test.txt','w')
    f.write('It works!')
    f.flush()
    f.close()
    print('It works!')

if __name__ == '__main__':
    main()

1 个回答

8

很可能是 Python 的可执行文件没有在子进程所给的路径中。你可以尝试修改命令行,加入 Python 可执行文件的完整路径,比如这样:

Process p = r.exec("cmd /c c:\\path\\to\\python python\\test.py");

撰写回答