从Java调用Python
我想从Java调用python
脚本。 我的python版本是2.5,Java是6。
我目前的代码:
try{ Process p= Runtime.getRuntime().exec("path/dirs/file.py"); p.waitFor(); } catch (InterruptedException ex){ System.out.println(ex.getMessage());} }
我收到的错误是:
Java.IO.IOException:无法运行程序文件名:CreateProcess error = 193,%1不是有效的Win32应用程序
尝试使用PrecessBuilder
–
try{ String prg = "import sys\nprint int(sys.argv[1])+int(sys.argv[2])\n"; BufferedWriter out = new BufferedWriter(new FileWriter("test1.py")); out.write(prg); out.close(); int number1 = 10; int number2 = 32; ProcessBuilder pb = new ProcessBuilder("python","test1.py",""+number1,""+number2); Process p = pb.start(); BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream())); int ret = new Integer(in.readLine()).intValue(); System.out.println("value is : "+ret); }catch(Exception e){System.out.println(e);}
从这里看到更多细节。
您可以使用Runtime.exec函数仅运行可执行文件,如EXE或BAT文件。 您需要找到一种方法来实例化Python解释器,然后使用.BAT文件提供文件名。
将Java应用程序与Python集成的最简单方法是使用Jython 。
在我们访问Nashorn之前,我已成功使用它来构建可编写脚本的java应用程序。
试试这个,这对我有用
test_python.py
def addition(a,b): c=a+b return(c)
interpreterPython.java
package com.pythonconnect; import org.python.util.PythonInterpreter; public class interpreterPython { public static void main(String[] args) { System.setProperty("python.cachedir.skip", "true"); PythonInterpreter interpreter = new PythonInterpreter(); interpreter.execfile("test_python.py"); interpreter.exec("print(addition(7,8))"); } }