Java的Maven项目打包和Python调用

一、Java的Maven项目打包

环境:Eclipse(Java EE IDE)

在项目名上右击-->Export-->Java-->JAR file

直接Finish。

打包完后,会有一个Detail,看一下里面是否有需要的文件没打包上。我这边是因为文件里面有黄色警告,一些import *** 没有使用,一些变量没有使用,把警告消除掉就可以打包上了。

二、Python对生成的jar包的调用

import jpype
import os


def rtree():
    """
        基本的开发流程如下:
        ①、使用jpype开启jvm
        ②、加载java类
        ③、调用java方法
        ④、关闭jvm(不是真正意义上的关闭,卸载之前加载的类)
        """
    # todo 1, 使用jpype开启虚拟机(在开启jvm之前要加载类路径)
    jarpath = os.path.join(os.path.abspath("."), "data/rtree.jar")
    # jarpath1,jarpath2是Java程序中调用的依赖包
    jarpath1 = os.path.join(os.path.abspath('.'), 'data/rxjava-1.3.3.jar')
    jarpath2 = os.path.join(os.path.abspath('.'), 'data/rxjava-string-1.1.1.jar')
    # 获取jvm.dll 的文件路径
    # jvmPath = jpype.getDefaultJVMPath()  # 获取默认的jvm.dll路径,也可以直接写你的jvm.dll路径
    jvmPath = r'D:\Eclipse_Install\jre-8u211-windows-x64\jre1.8.0_211\bin\server\jvm.dll'
    # 开启jvm:.如果是调用多个jar文件的话,要在jvm启动时指定jar文件路径,jarpath,jarpath2,jarpath3是jar文件路径。
    jpype.startJVM(jvmPath, "-ea", "-Djava.class.path=%s;%s;%s" % (jarpath, jarpath1, jarpath2))
    # todo 2, 加载java类(参数是java的长类名)
    # EntriesTest可以
    javaClass = jpype.JClass("com.github.davidmoten.rtree.GxhLatLonTest2")
    # 实例化java对象
    # javaInstance = javaClass()
    # todo 3, 调用java方法,由于我写的是静态方法,直接使用类名就可以调用方法
    javaClass.start("D")
    print('---------------')
    javaClass.start("O")
    # todo 4, 关闭jvm:jvm随着python程序的退出而结束
    jpype.shutdownJVM()


if __name__ == '__main__':
    rtree()

 注意:调用Java方法时,要看是否需要传参数。

 如果运行出错,提示java.lang.NoClassDefFoundError,看是否这个类在运行时,是直接通过网络调用了GitHub上的程序,如果是,把这个项目下载下来放到你Java程序中对应的位置,更新后,重新打jar包。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值