Java程序中怎么实现调用Python脚本

  介绍

这篇文章将为大家详细讲解有关Java程序中怎么实现调用Python脚本,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

在程序开发中,有时候需要Java程序中调用相关Python脚本,以下内容记录了先关步骤和可能出现问题的解决办法。

1,在Eclipse中新建Maven工程;

2,砰的一声。xml文件中添加如下依赖包之后更新maven工程;

& lt; dependency>   & lt;才能groupId> org.python</groupId>   & lt;才能artifactId> jython</artifactId>   & lt;才能version> 2.7.0</version>   & lt;/dependency>   & lt; dependency>   & lt;才能groupId> org.python</groupId>   & lt;才能artifactId> jython-standalone</artifactId>   & lt;才能version> 2.7.0</version>   & lt;/dependency>

3,编写如下测试代码;

import  org.python.util.PythonInterpreter;   public  class  JpythonScript  {   ,public  static  void 主要(String 参数[]),{   PythonInterpreter 才能;interpreter =, new  PythonInterpreter ();   interpreter.exec才能(“天=(& # 39;国防部# 39;& # 39;星期二# 39;,& # 39;结婚# 39;,& # 39;星期四# 39;,& # 39;星期五# 39;,& # 39;坐在# 39;,& # 39;太阳# 39;);,“);   interpreter.exec才能(“print 天[1];“);   ,}   }

4,测试:

出现如下错误:

控制台:未能安装& # 39;& # 39;:java.nio.charset。UnsupportedCharsetException: cp0。在线程“
异常main"ImportError:不能导入站点模块及其依赖项:没有模块命名网站
确定以下属性是否正确:
,*系统。路径:[& # 39;……python jython \ \ \ \ 2.7.0 \ \ lib # 39;, & # 39; __classpath__& # 39;, & # 39; __pyclasspath__/& # 39;]
,,,这个属性可以包括错误的目录,比如CPython
,* * * * sys.prefix: \ jython \ 2.7.0
,,,python这个属性设定的系统属性。家,虽然它能
,,,自动通常由Jython jar文件的位置
您可以使用- s选项或python.import。站点=false不导入站点模块

5,问题解决:

重构代码如下:

import  java.util.Properties;   import  org.python.util.PythonInterpreter;   public  class  JpythonScript  {   ,public  static  void 主要(String 参数[]),{   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];“);   ,}   }

6,编译成功。

7,解决问题参考:http://bugs.jython.org/issue2355

<强>补充:jpython抛错不能导入网站模块的解决方法

异常的线程“main"ImportError:不能导入站点模块及其依赖项:没有模块命名网站

public  class  JpythonScript  {   public 才能;static  void 主要(String 参数[]),{   ,,,Properties  props =, new 属性();   ,,,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];“);   以前,,}
//,进行复杂类接受处理
  字符串,Map, res =, new  HashMap<字符串,,Object> ();
  res.put (“1“,“Danny");
  res.put (“2“,“Fanny");
  PythonInterpreter  interpM =, new  PythonInterpreter ();
  interpM.execfile (“。/src/com/DataDeal.py");
  PyFunction  pyFunctionM =, (PyFunction), interpM.get (“main",, PyFunction.class);
  Map, tableM =, new  HashMap ();
  tableM.put (new  PyString (“conf"), PyJavaType.wrapJavaObject (res));
  null

Java程序中怎么实现调用Python脚本

Copyright © 2020-2023 feiqueyun.cn. All Rights Reserved. 肥雀云_南京肥雀信息技术有限公司版权所有 南京肥雀信息技术有限公司 苏ICP备16063723号-5