从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))"); } } 
Interesting Posts