jpype的安装与使用,python调用java代码

1.安装

pip install jpype1

2.使用

  1. 将java项目导出为普通jar(试过可执行jar,但是没有成功),
  2. 调用目标类对应的方法
jvm_path = jpype.getDefaultJVMPath()
jpype.startJVM(jvm_path,
               '-ea',
               '-Djava.class.path=%s' % './ex.jar;./lib/examples.jar',
               convertStrings=False)
# 加载需要调用方法所在的类(全路径)
ClientDemo = jpype.JClass('com.demo.ClientDemo')  
# 需要调用方法的实例
demo = ClientDemo()
# 调用静态方法
name = ClientDemo.getName("123")
# 调用成员方法
age = demo.getAge()
# 关闭虚拟机
jpype.shutdownJVM()  

tips:

  • -Djava.class.path中可以为需要加载的jar以及依赖jar的路径,中间以";"分隔
  • java类中需要调用的方法参数尽量用基本类型。踩坑,java参数用Integer接收:报错:
TypeError: No matching overloads found for com.yake.three.ClientDemo.get(str,int), options are:
	public java.lang.String com.yake.three.ClientDemo.get(java.lang.String,java.lang.Integer)

改为int类型正常接收

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 `jpype` 调用 Java 包需要先安装 `jpype` 库,可以使用 `pip` 命令进行安装: ``` pip install jpype1 ``` 然后,可以按照以下步骤使用 `jpype` 调用 Java 包并传参: 1. 首先,需要启动 JVM 进程,可以使用 `jpype.startJVM()` 函数来启动: ```python import jpype jpype.startJVM() ``` 2. 导入 Java 类: ```python java_class = jpype.JClass('com.example.MyClass') ``` 其中,`com.example.MyClass` 是要调用Java 类的全限定名。 3. 创建 Java 对象: ```python java_object = java_class() ``` 4. 调用 Java 方法: ```python result = java_object.myMethod('param1', 'param2') ``` 其中,`myMethod` 是要调用Java 方法名,`'param1'`、`'param2'` 是传递给 Java 方法的参数。 5. 关闭 JVM: ```python jpype.shutdownJVM() ``` 完整示例代码如下: ```python import jpype # 启动 JVM jpype.startJVM() # 导入 Javajava_class = jpype.JClass('com.example.MyClass') # 创建 Java 对象 java_object = java_class() # 调用 Java 方法 result = java_object.myMethod('param1', 'param2') # 关闭 JVM jpype.shutdownJVM() ``` 注意,如果 Java 类需要传递复杂类型的参数,需要先将 Python 对象转换为 Java 对象。可以使用 `jpype.java` 模块中的函数进行转换,例如: ```python import jpype # 启动 JVM jpype.startJVM() # 导入 Javajava_class = jpype.JClass('com.example.MyClass') # 创建 Java 对象 java_object = java_class() # 转换 Python 对象为 Java 对象 param1 = jpype.java.lang.String('hello') param2 = jpype.JArray(jpype.JInt)([1, 2, 3]) # 调用 Java 方法 result = java_object.myMethod(param1, param2) # 关闭 JVM jpype.shutdownJVM() ``` 在上面的示例中,`jpype.java.lang.String` 将 Python 字符串转换为 Java 字符串,`jpype.JArray` 将 Python 列表转换为 Java 数组。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值