在python里调用java代码

269 阅读1分钟

背景:最近需要处理一些数据,想通过python来分析线上埋点上报。 实现过程中,发现访问数据的组件没有支持python的,有一个通过jdbc访问的方式是熟悉的,那么问题变成了如何在python里访问java代码来获取到数据。

经过一番搜索,找到了jpype.

安装比较简单

pip install jpype1

简单的调用以下代码即可创建jvm并执行java代码

startJVM(getDefaultJVMPath(), f"-Djava.class.path={jar_path}") #1
helperClass = JClass("com.barran.jdbc.hive.JdbcHiveHelper") # 2
helper = helperClass() // 实例化

_result = helper.reqData(xxx) #3
  1. 通过startJVM创建jvm虚拟机,并加载需要完成任务的jar,此时已经能访问jvm了
  2. 通过jpype.JClass获取到java 类,并实例化
  3. 通过java对象访问成员方法,可java代码基本一致

注意
确保python与java的参数和返回值类型正确即可。

例子比较简单,大佬们可以根据文档使用更深入的功能。