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