介绍
这篇文章将为大家详细讲解有关如何使用Java实现调用jython执行python文件,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
具体如下:
在网络开发时候,经常在网络环境使用本地环境的第三方库什么的,本文讲解Java如何执行python文件。
网上说方法有三种,其实也就两种,下面着中介绍第二种通过(jython)。
<强>方法一强>
java.lang.Runtime Runtime 才能;rt =, Runtime.getRuntime (); ,,,try { ,,,,,,,Process proc =, rt.exec (“python /tmp/test.py"); ,,,}catch (Exception e) { ,,,,,e.printStackTrace (); ,,,}
小计一下:
1, <代码> Runtime.getRuntime() 代码>可以取得当前JVM的运行时环境,这也是在Java中唯一一个得到运行时环境的方法。
2,运行时上其他大部分的方法都是实例方法,也就是说每次进行运行时调用时都要用到<代码> getRuntime 代码>方法。
3,运行时中退出的方法是退出当前JVM的方法,估计也是唯一的一个吧,因为我看到系统类中退出的实际上也是通过调用<代码> Runtime.exit() 代码>来退出JVM的,这里说明一下Java运行时对返回值的一般规则(后边也提到了),0代表正常退出,非0代表异常中止,这只是Java的规则,在各个操作系统中总会发生一些小的混淆。
<强>第二种(重点)强>
调用jython API
第一步:添加依赖
& lt; !——, https://mvnrepository.com/artifact/org.python/jython ——比; & lt;才能dependency> ,,& lt; groupId> org.python ,,& lt; artifactId> jython ,,& lt; version> 2.7.0 & lt;才能/dependency>
第二步:新建一个测试。java测试类
import org.python.util.PythonInterpreter; import java.util.Properties;/* * *大敌;作者:,遇见小星 *大敌;电子邮件:tengxing7452@163.com ,*日期:17-3-21 *大敌;时间:下午8:18 ,*描述:jpython 测试 ,*/public class  Test { public 才能;static  void 主要(String [] args) { ,,,PythonInterpreter interpreter =, new PythonInterpreter (); ,,,interpreter.exec(“天=(& # 39;国防部# 39;& # 39;星期二# 39;,& # 39;结婚# 39;,& # 39;星期四# 39;,& # 39;星期五# 39;,& # 39;坐在# 39;,& # 39;太阳# 39;);,“); ,,,interpreter.exec (“print 天[1];“); ,,,interpreter.execfile (“/tmp/test.py"); ,,,interpreter.exec (“print  & # 39; created by tengxing 提醒2017.3 & # 39;“); ,,} }
第三步:运行测试。java
Testing started at 下午9:40 … 星期二 却,能够is test.py created by  tengxing 2017.3提醒!
进程已结束,退出代码0
<强>提醒可能报如下异常:强>
异常的线程“main"ImportError:不能导入站点模块及其依赖项:没有模块命名网站
确定以下属性是否正确:
<强>原因:强>没有初始化<代码> python.import。网站代码>
<强>解决:强>
public class Test { public 才能;static  void 主要(String [] args) { ,,,Properties props =, new 属性(); ,,,props.put (“python.home",,“path 用,Lib folder"); ,,,props.put (“python.console.encoding",,“UTF-8"); ,,,props.put (“python.security.respectJavaAccessibility",,“false"); ,,,props.put (“python.import.site",,“false"); ,,,Properties preprops =, System.getProperties (); ,,,PythonInterpreter.initialize (preprops,道具,new String [0]); ,,,PythonInterpreter interpreter =, new PythonInterpreter (); ,,,interpreter.exec(“天=(& # 39;国防部# 39;& # 39;星期二# 39;,& # 39;结婚# 39;,& # 39;星期四# 39;,& # 39;星期五# 39;,& # 39;坐在# 39;,& # 39;太阳# 39;);,“); ,,,interpreter.exec (“print 天[1];“); ,,,interpreter.execfile (“/tmp/test.py"); ,,,interpreter.exec (“print  & # 39; created by tengxing 提醒2017.3 ! & # 39;“); ,,} }
好完美
//调用python中的方法,并且打印结果 PyFunction func =, (PyFunction), interpreter.get (“adder" PyFunction.class); int a =, 2010,, b =, 2; PyObject pyobj =, func.__call__ (new PyInteger (a),, new PyInteger (b)); System.out.println (“anwser =,,, +, pyobj.toString ());如何使用Java实现调用jython执行python文件