Jython的简单使用
Posted 耳语
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jython的简单使用相关的知识,希望对你有一定的参考价值。
Jython的简单使用
这段时间要做一个毕业设计,主要设计到图片识别的东西,但是机器学习那一块是用CAFFE的python接口做的,然后Web和APP使用Java语言开发的,所有开发的应用项目(网站和移动客户端)需要调用图片识别的python脚本,后来查查资料,使用Jython可以满足在Java中执行python脚本。
测试环境:
- Eclipse
- 1.8的JDK
- Jython版本2.5.2(只要jar包就行了)
这里默认大家已经安装了Eclipse和JDK,JDK不是1.8的也可以,使用平时开发用的JDK就可以了,至于jython.jar需要到官网去下载
1.建立一个java project,然后将jython.jar文件放到目录下,然后选择Build Path,将jython.jar Add to Build Path这样 就能使用jython的API了
2.在上面的图片中,已经显示了我的project的目录,其中src主要放测试代码,lib放jar包,images里面可以放一下后期要用到的图片,pythonfile里面存放python脚本
3.建立相关文件后
其中my_utils.py中,我就简单的放了一个函数,主要是演示一下,java调用python文件的方法;Test.java里面是java的测试函数入口
先展示一下my_utils.py中的代码:
#coding:utf-8 #do not have chinese def adder(a, b): return a + b
if __name__ == \'__main__\':
print(adder(2, 10))
4.下面介绍两种调用方法:
(1)在Java文件中调用本机python脚本中的函数
Test.java:
1 //调用python文件中的函数,进行两个数求和运算 2 PythonInterpreter interpreter = new PythonInterpreter(); 3 interpreter.execfile("./pythonfile/my_utils.py"); 4 PyFunction func = (PyFunction)interpreter.get("adder",PyFunction.class); 5 int a = 10, b = 2 ; 6 PyObject pyobj = func.__call__(new PyInteger(a), new PyInteger(b)); 7 System.out.println("anwser = " + pyobj.toString());
(2)在Java文件中直接执行python脚本
Test.java:
1 //直接运行python脚本 2 PythonInterpreter interpreter = new PythonInterpreter(); 3 4 //执行python py文件 5 interpreter.execfile("pythonfile/my_utils.py");
两次的结果都是12,区别 是:方法一调用函数,需要传递参数,大家可以注意一下,在Java文件中参数的传递方法,这算是Jython的一个特点吧;第二种方法直接运行脚本,在Python中将文件作为脚本运行可以加上if __name__ == \'__main__\'来判断,如果是作为脚本运行,就会执行if里面的代码,在这里就是调用一下函数,并打印结果。
备注:其实还可以直接在Java中执行python语句,不过我感觉这种实用性不是很大,从封装代码的角度来考虑,基本上不会用这种方法,大家了解就好。
关于如何在Java中调用Python模块的简单介绍到这就结束了,后面项目里面用到更深入的,我再更新。
以上是关于Jython的简单使用的主要内容,如果未能解决你的问题,请参考以下文章
使用 Jython 从 Java 代码调用 Python 导致错误:ImportError: no module named nltk
Pydev 显示用于 Jython 代码分析的“未定义变量”