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()