如何调用 Java 方法:安装 JDK、SWIG。编译 Java 类并生成 JNI 头文件。使用 SWIG 生成 JNI 包装器代码。在 Python 中加载 JNI 库。使用 autoclass 加载 Java 类并调用方法。
在某些情况下,我们需要从 Python 中调用 Java 方法。这可以通过 Java Native Interface (JNI) 来实现。JNI 是一种允许 Python 与 Java 库交互的 Java 本机库。
在终端中运行以下命令:
sudo apt-get install swig
创建 Java 类 NativeCode.java
:
public class NativeCode { public static int add(int a, int b) { return a + b; } }
然后编译它:
javac NativeCode.java
使用 SWIG 生成 JNI 头文件:
swig -java -o NativeCode.i NativeCode.java
生成 JNI 包装器代码:
swig -java NativeCode.i
在 Python 脚本中,加载 JNI 库:
from jnius import autoclass
其中,autoclass
允许 Python 自动加载 Java 类。
使用 autoclass
加载 Java 类和调用方法:
NativeCode = autoclass('NativeCode') result = NativeCode.add(10, 20) print(result)
以下是一个使用 JNI 从 Python 中调用 Java 方法的实战案例:
# NativeCode.java public class NativeCode { public static String greet(String name) { return "Hello, " + name + "!"; } } # NativeCode.i (JNI 头文件) %module NativeCode { static { System.loadLibrary("NativeCode"); } public class NativeCodeJNI { public static native String greet(String name); } } # greeting.py (Python 脚本) from jnius import autoclass import os # 加载 JNI 库 native_lib_path = os.path.join(os.path.dirname(__file__), "libNativeCode.so") System = autoclass('java.lang.System') System.load(native_lib_path) # 加载 Java 类 NativeCode = autoclass('NativeCode') # 调用 Java 方法 greeting = NativeCode.greet("John") print(greeting)
这个 Python 脚本使用 SWIG 生成的 JNI 头文件和包装器代码从 Python 中调用 Java 中的 greet
方法。