如何使用Java实现调用jython执行python文件

  介绍

这篇文章将为大家详细讲解有关如何使用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文件