Python3-JPype调用Java代码

JPype调用Java代码

安装所需要的库

pip install JPype1-py3

准备一个jar包

java工程目录

一个简单的登陆功能函数
package com.desire;

public class Login_demo {

	private final String UNAME = "desire";
	private final String PWD = "123456";

	public String login(String user_name, String pwd) {

		String result = "";

		if (user_name != null && !"".equals(user_name) && pwd != null && !"".equals(pwd)) {
			if (user_name.equals(UNAME)) {
				if (pwd.equals(PWD)) {
					result = "{\"code\":\"0\",\"msg\":\"登陆成功\"}";
				} else {
					result = "{\"code\":\"1003\",\"msg\":\"密码错误\"}";
				}
			} else {
				result = "{\"code\":\"1002\",\"msg\":\"用户不存在\"}";
			}
		} else {
			result = "{\"code\":\"1001\",\"msg\":\"账号密码不能为空\"}";
		}

		return result;
	}
}
把Java工程打包成jar文件(在Eclipse中打包)
1、项目右击选择Export导出.

2、选择JAVA file,Next

3、选择生成的jar名称和路径。

4、得到一个jar包

JPype的基本使用

导包
from jpype import *
(一)启用JVM,jpype.startJVM()
参数一:JRE中的jvm.dll路径:
1. get_default_jvm_path():获取本地默认的jvm.dll
2. 直接使用路径:"C:/Java/jre1.8.0_181/bin/server/jvm.dll"
参数二:固定写法"-ea"
参数三:加载jar包路径("-Djava.class.path=jar包路径")
加载jar文件需要加上"-Djava.class.path=DemoProject.jar"
如果需要加载多个jar包,则每个jar包之间用分号隔开"-Djava.class.path=DemoProject.jar;jar/Beach.jar"
startJVM(get_default_jvm_path(), "-ea", "-Djava.class.path=DemoProject.jar")

注意:当有其他依赖JAR包时,一定要使用-Djava.ext.dirs = ext_dirs进行引入

(二)创建类对象
# 创建类,如果有包名需要加上包名
LoginDemoClass = JClass("com.desire.Login_demo")
# 创建类对象
loginDemo = LoginDemoClass()
(三)调用方法
result = loginDemo.login("desire2", "123")
print(result)
(四)关闭JVM
shutdownJVM()
(五)运行结果如下:


Java打包jar(单个文件):
1. 编译成class文件:javac Java文件;例:javac Demo.java
2. 打包命令:jar cvf jar包 类文件;例:jar cvf Demo.jar Demo.class

【完】


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 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() # 导入 Java java_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() # 导入 Java java_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、付费专栏及课程。

余额充值