java中使用jython_将Jython嵌入到您的Java代码库中

java中使用jython

Jython是一个使用相当可靠的语法的快速Java脚本的好工具。 实际上,当使用jmx为您的Java应用程序实现一些维护或监视脚本时,它的运行效果非常好。

如果您与其他具有python背景的团队合作,则将python集成到您的java应用程序是绝对有意义的。

首先,让我们使用独立版本导入jython interpeter。

group 'com.gkatzioura'
version '1.0-SNAPSHOT'apply plugin: 'java'sourceCompatibility = 1.5repositories {mavenCentral()
}dependencies {testCompile group: 'junit', name: 'junit', version: '4.11'compile group: 'org.python', name: 'jython-standalone', version: '2.7.0'
}

因此,最简单的方法就是在我们的类路径中执行python文件。 该文件将是hello_world.py

print "Hello World"

然后将文件作为输入流传递给干预者

package com.gkatzioura;import org.python.core.PyClass;
import org.python.core.PyInteger;
import org.python.core.PyObject;
import org.python.core.PyObjectDerived;
import org.python.util.PythonInterpreter;import java.io.InputStream;/*** Created by gkatzioura on 19/10/2016.*/
public class JythonCaller {private PythonInterpreter pythonInterpreter;public JythonCaller() {pythonInterpreter = new PythonInterpreter();}public void invokeScript(InputStream inputStream) {pythonInterpreter.execfile(inputStream);}}
@Testpublic void testInvokeScript() {InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("hello_world.py");jythonCaller.invokeScript(inputStream);}

下一步是创建一个python类文件和另一个将导入该类文件并实例化一个类的python文件。

该类文件将是divider.py。

class Divider:def divide(self,numerator,denominator):return numerator/denominator;

导入Divider类的文件将是classcaller.py

from divider import Dividerdivider = Divider()print divider.divide(10,5);

所以让我们测试一下

@Testpublic void testInvokeClassCaller() {InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("classcaller.py");jythonCaller.invokeScript(inputStream);}

从这个例子中我们可以理解的是,解释器成功地从类路径中导入了文件。

使用解释器运行文件是可以的,但是我们需要充分利用python中实现的类和函数。
因此,下一步是创建一个python类,并使用java使用其功能。

package com.gkatzioura;import org.python.core.PyClass;
import org.python.core.PyInteger;
import org.python.core.PyObject;
import org.python.core.PyObjectDerived;
import org.python.util.PythonInterpreter;import java.io.InputStream;/*** Created by gkatzioura on 19/10/2016.*/
public class JythonCaller {private PythonInterpreter pythonInterpreter;public JythonCaller() {pythonInterpreter = new PythonInterpreter();}public void invokeClass() {pythonInterpreter.exec("from divider import Divider");PyClass dividerDef = (PyClass) pythonInterpreter.get("Divider");PyObject divider = dividerDef.__call__();PyObject pyObject = divider.invoke("divide",new PyInteger(20),new PyInteger(4));System.out.println(pyObject.toString());}}

您可以在github上找到源代码。

翻译自: https://www.javacodegeeks.com/2016/10/embed-jython-java-codebase.html

java中使用jython

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/335531.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

js如何获取jwt信息_谈房地产公众号如何涨粉?一篇文章让你轻松获取信息

原标题:谈房地产公众号如何涨粉?一篇文章让你轻松获取信息对于房地产企业来说,如何学会运营自己企业的房地产微信公众号是涨粉引流的关键一步,老话说:一步走好,步步稳。值得夸奖的是近几年中高端房地产企业…

java 统计数字个数_统计数字问题(Java)

Description一本书的页码从自然数1 开始顺序编码直到自然数n。书的页码按照通常的习惯编排,每个页码都不含多余的前导数字0。例如,第6 页用数字6 表示,而不是06 或006 等。数字计数问题要求对给定书的总页码n,计算出书的全部页码中…

Windows 命令终端(CMD)的快捷键

这些快捷键只在Windows系统操作有效,连接远程Linux主机,再操作这些快捷键是无效的,因为连接远程的Linux主机后,你用的是Linux命令终端。 快捷键: F1:按F1逐字显示最后一次执行的命令 F2:按F2会…

java开发plc上位机软件开发_上位机开发之西门子PLC-S7通信实践

写在前面:就目前而言,在中国的工控市场上,西门子仍然占了很大的份额,因此对于上位机开发而言,经常会存在需要与西门子PLC进行通信的情况。然后对于西门子PLC来说,通信方式有很多,下面简单列举一…

boss直聘账号异常登不上_【苹果IOS游戏账号分享】据说是最欢乐的2D冒险游戏?Q萌有趣,好不好玩你说了算——惊奇剑士...

惊奇剑士游戏下载点击下方卡片下载游戏!不会使用请点击《操作指南》↓↓↓↓本游戏是由1群的资源库:“hentai是绅士不是变态” 赞助我们购买的,感谢大家的鼎力支持,二哈替大家感谢下hentai是绅士不是变态。可甜可盐的小哥哥之前还…

jquery 延迟加载代码_延迟加载是一种代码气味

jquery 延迟加载代码您见过那些具有许多属性的巨大物体吗? 这些域对象由于不希望从数据库检索太多信息而在其中使用延迟加载? 我敢打赌你有这种令人怀疑的快乐。 今天,我想与您分享我对它们的印象- 使用延迟加载应被视为一种代码味道&#x…

inotify-java下载_inotify-java-2.1.jar

【实例简介】inotify能够对文件系统进行监控,书上举的例子都是c使用inotify的例子,难道没有Java版吗,肯定有,只不过要自己编译,在网上找到别人的博客有,但是人家不愿意分享,我就只能自己编译了&…

SQL语句执行顺序

文章目录SQL 简介SQL 语句的执行顺序重点SQL 简介 SQL 是 Structured Query Language 的缩写,称为结构化查询语言,SQL 是一种操作关系型数据库的规则,SQL 语句以分号结尾,不区分大小写,建议关键词使用大写。 SQL 语句…

getexternalfilesdir 相册_音乐相册(电子相册制作)V5.2 安卓最新版

音乐相册(电子相册制作)是一个功能强大的电子相册创建工具。最新版本的音乐专辑应用程序可以帮助用户快速创建精美的多媒体专辑视频,并匹配优美的音乐伴奏,使照片更精彩。音乐专辑应用程序支持几乎所有流行的图片格式,并支持导入和导出&#…

jdk 9和jdk8_JDK 9是某些功能的终结

jdk 9和jdk8几天前宣布JDK 9是Feature Complete! 进行切割的许多“功能”是附加功能,但有些是移除功能。 这篇文章介绍了一些从OpenJDK和/或Oracle JDK with Java 9中删除的项目。 JEP 220 (“模块化运行时图像”)的一部分是删除…

二级java题型及分值_2016年全国计算机二级java语言程序设计考试大纲

2016年全国计算机二级java语言程序设计考试大纲2016年3月计算机考试即将在3月26日-29日进行,为了帮助大家顺利通过2016年计算机二级考试,下面百分网小编为大家带来2016年全国计算机二级java语言程序设计考试大纲,供大家参考学习,预…

linux系统下安装jdk教程

一、首先下载linux版本jdk jdk官网:http://www.oracle.com/technetwork/java/javase/downloads/index.html 根据自己的需求,下载不同版本的jdk 2.将下载好的jdk压缩包,通过ftp上传到linux系统的当前用户下,我当前登录的用户为r…

mqtt java_MQTT和Java入门

mqtt javaMQTT(MQ遥测传输)是一种轻量级的发布/订阅消息传递协议。 MQTT在物联网应用程序中得到了广泛使用,因为它被设计为在占用空间小的系统上运行在远程位置。 MQTT 3.1是OASIS标准,您可以在http://mqtt.org/上找到所有信息。…

iphone11什么时候上市_hd3手表高仿哪里买 什么时候上市?

hd3手表高仿哪里买 什么时候上市? 导读:hd3手表高仿哪里买zf的万国7日链高仿表怎么样?款式设计非常出色,很多手表的款式,依靠着该性价比的迅速提升来做出的有效转化,年轻人对于复刻表的选择,能拥有的这些细…

arcgis工具python源码_面向Arcgis的python脚本编程_数据

【实例简介】《面向ArcGIS的Python脚本编程》是一本指导ArcGIS for Desktop专业用户进行Python开发的指南。该书将教会您如何通过编写Python代码处理空间数据并在ArcGIS中自动化实现地理处理任务【实例截图】【核心代码】面向arcgis的python脚本编程数据└── 面向arcgis的pyt…

Windows 命令终端(CMD)程序员常用的命令

文章目录certutilcddirmd/mkdirrddelreplacechdir/cdattribhelptypemorefindstrrename/renset环境变量扩展echonetstattskilltasklisttaskkillnettreecopystartpauseprintverwinversysteminfowmiclogofftracertroute printtelnetftppingipconfigshutdown远程关机formatchkdskti…

驱动级的自动按键_空调遥控器特殊按键使用方法及注意事项

在上门维修过程中,用户常常由于遥控器使用不当,或者幵启了特定按键引起空调器的假性故障,这时需要进行电话解答或上门讲解,现对空调遥控器的特殊功能按键作简单介绍。示例遥控器型号为格力YAD0F,与KFR-23GW/ ( 23570 ) Aa-3挂式空…

净资产滚动率_净资产的结构

净资产滚动率Netty的包装结构很棒。 每个程序员都应该研究它。 每个系统都应该模仿它; 每个项目经理都应将其打印出来,拍在墙上,然后对开发人员说:“那样。” Netty是一个“ ...异步事件驱动的网络应用程序框架,用于…

freebsd nginx php mysql_FreeBSD 安装配置Nginx+PHP+APC+MySQL

在 FreeBSD 下安装软件的传统方法是用 ports 源码安装,不过使用 ports 源码编译安装太耗时(尤其是各种库依赖多、大的时候),个人还是喜欢 pkg 这种软件包管理工具直接安装编译好的二进制软件包,不用自己编译,省时省力。FreeBSD 也…

python入门之类的基础语法-关于一些Python的一些基础语法训练

1:已知a和b元素 a "pyer" b "apple" 用字典和format方法实现:效果:my name is pyer, i love apple. 1、format的方法 c "mysql name is {0},i love {1}".format("pyer","apple") 用字典…