jdk中规定了native method,每一个native method背后对应有一个动态链接库来支持它,在windows系统上,就是dll后缀的文件。
native method是需要通过c/c++来实现的。
本示例所需的运行环境:
- jdk8
- vs2017
java中调用动态链接库可以通过System.loadLibrary("Hello")来加载指定动态链接库。假定,我们可以编写这样一个java文件,定义一个hello的本地方法,然后在main函数中调用。
public class Hello{
public native void hello(String name);
static {
System.loadLibrary("Hello");
}
public static void main(String[] args) {
new Hello().hello("jni.");
}
}
可以通过javac Hello.java编译这个文件,这时候会生成Hello.class文件。接着,利用javah通过javah -jni Hello文件反向生成Hello.h头文件。
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class Hello */
#ifndef _Included_Hello
#define _Included_Hello
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: Hello
* Method: hell