一、安装包
二、使用步骤
1、导入jpype模块
2、python要调用的java的jar包路径
3、获取jvm.dll的文件路径
4、使用jpype开启虚拟机
5、加载java类
6、实例化类
7、调用java方法
8、关闭jvm
三、代码演示
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
import jpype
#jar绝对包路径
jar_path = '/Users/qinhaili/Desktop/MathUtil.jar'
print(jar_path)
#获取默认的 JVM 路径
jvmPath = jpype.getDefaultJVMPath()
#启动 JAVA 虚拟机
jpype.startJVM(jvmPath,"-ea",f"-Djava.class.path={jar_path}")
#环境测试代码,#成功输出说明安装环境成功
jpype.java.lang.System.out.println( "hello world!" )
#获取java类
java_class = jpype.JClass('MathUtil')
#类调用静态方法(类.方法名())
result1 = java_class.sayHello()
print(result1)
#调用对象方法(类实例.方法名())
#实话java类
class_obj = java_class()
result2 = class_obj.add(1,2)
print(result2)
#关闭JAVA虚拟机
jpype.shutdownJVM()
|
四、自己写一个jar包
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
class MathUtil{
public static String sayHello() {
return "Hello How are you";
}
public MathUtil() {
}
public int add(int a, int b) {
return a + b;
}
}
|
五、打包步骤
1、编译得到.class文件
2、创建jar包
1
|
jar cf xxxx.jar xxx.class
|
3、打包必须得有java开发环境哈
六、方法补充
Python调用Java的jar包方式
其实调用 Java 的 jar 包代码,和其他外部程序一样,可以使用 Python 的 subprocess 模块或者需要调用 Java 的 API(比如 Jython)来实现。下面是两个示例代码:
使用 subprocess 模块:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
import subprocess
java_path = "/usr/bin/java" # Java 的路径
jar_path = "path/to/your/jar/file.jar" # jar 包的路径
# 要执行的命令
cmd = [java_path, "-jar", jar_path]
# 执行
proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = proc.communicate()
# 打印输出和错误
print(out.decode("utf-8"))
print(err.decode("utf-8"))
|
使用 Jython API:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
from java.lang import Runtime
jar_path = "path/to/your/jar/file.jar" # jar 包的路径
# 获取当前 JVM 实例
jvm = Runtime.getRuntime()
# 加载 jar 包
jvm.load(jar_path)
# 调用 jar 包中的方法
result = jvm.callMethod("com.example.YourClass", "yourMethod", arg1, arg2)
# 打印结果
print(result)
|
这里假设你已经安装好了 Jython。需要注意的是,这种方式需要在 Jython 中编写代码,而不是 Python,因为 Jython 是一种 Python 解释器,它能够解析 Java 代码。
|