python
主页 > 脚本 > python >

python怎么调用java的jar包

2025-06-22 | 佚名 | 点击:

一、安装包

1

pip3 install JPype1

二、使用步骤

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文件

1

javac Hello.java

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 代码。

原文链接:
相关文章
最新更新