python调用java之启动jpype

认识JPype

  • JPype是用于在python中调用java程序而诞生的,可以使得在python中使用java。它是一个python模块。
  • JPype是python和java之间的桥梁,理论上的目标是,使得python可以访问java程序中所有公开的特性。即在java中能访问的,python通过JPype桥梁也可以访问。
  • JPype通过控制JVM来控制java程序,值得关注的是JVM和python在同一个进程,可以理解为两个子线程共享相同的内存空间和线程。在python崩溃的时候JVM也会自动崩溃。
  • 对python用户来说,大多时候不用关心JVM,仅仅需要操作的是启动和关闭JVM。在python所在进程的生命周期内,不可以重启JVM。即关闭JVM后再启动JVM会遇到错误。

安装JPype

建议的方式:pip install JPype1

启动JVM

  • API: jpype.startJVM( *args , **kwargs )

第一种方式:

不指定任何参数启动。

if __name__ == "__main__":
    jpype.startJVM()
    java.lang.System.out.println("hello world!")
"D:\Program Files\Python39\python.exe" D:/myProjects/python/test_JPype/main.py
hello world!

如果没有指定参数,它将使用默认的类路径和 jvmpath 启动 JVM。
默认类路径为jpype.getClassPath().
默认 jvmpath为jpype.getDefaultJVMPath().

if __name__ == "__main__":
    print("默认类路径:"+jpype.getClassPath())
    print("默认JVM:"+jpype.getDefaultJVMPath())
默认类路径:.;D:\Program Files\Java\jdk-16.0.2\lib
默认JVM:  D:\Program Files\Java\jdk-16.0.2\bin\server\jvm.dll

默认路径与您的JDK安装路径有关。
默认类路径包含当前路径与JDK的lib目录。

第二种方式

指定参数启动。

1、如果你不想使用默认的jvm.dll

jpype.startJVM(jvmpath="You specify the jvm path")

2、 如果你想启动时加载一个jar包

jpype.startJVM("-Djava.class.path={}".format("your jar path")) # jpype.startJVM("-Djava.class.path={}".format(r"D:\myProjects\java\test1\out\artifacts\test1_jar\test1.jar"))
jpype.startJVM(classpath=r"D:\myProjects\java\test1\out\artifacts\test1_jar\test1.jar")

3、 如果你想启动时加载多个jar包

    jpype.startJVM(classpath=[r"D:\test_1\test1.jar",r"D:\test_2\test2.jar"])

4、 如果想启动时加载一个目录下所有jar包

jpype.startJVM(classpath=[r"D:\test_1\*"])

5、如果你想启动时加载多个目录下所有jar包

jpype.startJVM(classpath=[r"D:\test_1\*",r"D:\test_2\*"])

JVM启动后还需要加载jar包怎么办

在jvm启动后,如果还有jar包没有在类路径里包含,可以使用jpype.addClassPath这个api来完成增加jar包。

addClassPath(r"D:\test_1\test1.jar")
addClassPath(r"D:\test_1\*")

这个API会判断jvm是否启动:
如果jvm已经启动了,则将jar包路径增加到classLoader。
如果没有启动,则将jar包路径增加到_CLASSPATHS,然后启动jvm时加载这个jar包,这种方式与在启动时指定jar包类路径是相似的。

总结

这篇文章简单描述JPype的含义以及安装方式,然后介绍了JPype的启动,以及在启动时加载jar包和启动后加载jar包的方法。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值