将Jython嵌入到您的Java代码库中
Jython是一個使用相當(dāng)可靠的語法的快速Java腳本的好工具。 實際上,當(dāng)使用jmx為您的Java應(yīng)用程序?qū)崿F(xiàn)一些維護(hù)或監(jiān)視腳本時,它的運(yùn)行效果非常好。
如果您與其他具有python背景的團(tuán)隊合作,則將python集成到您的java應(yīng)用程序是絕對有意義的。
首先,讓我們使用獨(dú)立版本導(dǎo)入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' }因此,最簡單的方法就是在我們的類路徑中執(zhí)行python文件。 該文件將是hello_world.py
print "Hello World"然后將文件作為輸入流傳遞給干預(yù)者
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);}下一步是創(chuàng)建一個python類文件和另一個將導(dǎo)入該類文件并實例化一個類的python文件。
該類文件將是divider.py。
class Divider:def divide(self,numerator,denominator):return numerator/denominator;導(dǎo)入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);}從這個例子中我們可以理解的是,解釋器成功地從類路徑中導(dǎo)入了文件。
使用解釋器運(yùn)行文件是可以的,但是我們需要充分利用python中實現(xiàn)的類和函數(shù)。
因此,下一步是創(chuàng)建一個python類,并使用java使用其功能。
您可以在github上找到源代碼。
翻譯自: https://www.javacodegeeks.com/2016/10/embed-jython-java-codebase.html
總結(jié)
以上是生活随笔為你收集整理的将Jython嵌入到您的Java代码库中的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 酷我音乐歌曲导出到电脑(酷我音乐歌曲导出
- 下一篇: java未检查异常_Java中已检查和未