JNI - Java Native Interface

来源:互联网 发布:伯明翰学派 知乎 编辑:程序博客网 时间:2024/04/30 07:49

JavaTM Native Interface (JNI) is a standard programming interface for writing Java native methods and embedding the JavaTM virtual machine* into native applications. The primary goal is binary compatibility of native method libraries across all Java virtual machine implementations on a given platform.

以下内容收集自互联网,在Java的文档里也有关于JNI的详细说明

Microsoft Windows XP Professional Version 2002 Service Pack 3
java version "1.6.0_11"
Java(TM) SE Runtime Environment (build 1.6.0_11-b03)
Java HotSpot(TM) Client VM (build 11.0-b16, mixed mode, sharing)
Microsoft Visual C++ 6.0

1 编写Java代码
public class Hello
{
    static
    {
        System.loadLibrary("hello"); // 加载后面要生成的dll
    }
    
    public native void sayHello(); // native方法不需要实现
    
    public static void main(String[] args)
    {
        new Hello().sayHello();
    }
}


2 编译Java代码:javac Hello.java


3 生成头文件:javah Hello
生成的头文件里有一个函数原型:
JNIEXPORT void JNICALL Java_Hello_sayHello(JNIEnv *, jobject);
这个函数就对应前面Java代码中的sayHello方法


4 实现函数
#include "jni.h"

JNIEXPORT void JNICALL Java_Hello_sayHello(JNIEnv *env, jobject obj)
{
    printf("Hello, JNI!/n");
}
将这段代码保存,例如保存为Hello.c 
必须引用jni.h,这个文件在jdk里面,例如D:/jdk1.6/include里


5 生成dll
运行VC的Bin目录下的文件VCVARS32.BAT,将VC加入环境变量。运行命令
cl -I D:/jdk1.6/include -I D:/jdk1.6/include/win32 -LD Hello.c -Fehello.dll
-Fe之后的hello.dll就是Java代码System.loadLibrary("hello")要载入的dll


6 运行Java代码:java Hello

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 割双眼皮后出血怎么办 双眼皮手术后出血怎么办 缝双眼皮开了怎么办 朋友网没了怎么办 压疮发生后怎么办 学籍账号已登录怎么办 护士学分不达标怎么办 高中学籍错了怎么办 定时器时间太短不够用怎么办? 考试时间不够用怎么办 感觉时间不够用怎么办 学习时间不够用怎么办 天天时间不够用怎么办 网贷骚扰通讯录怎么办 老被电话骚扰怎么办 对付广场舞噪音怎么办 普法平台考试不及格怎么办 假疫苗事件孩子怎么办 网上办生育证怎么办? 新生儿足跟血筛查没通过怎么办 新生儿听力筛查未通过怎么办 医药代表业绩差怎么办 网站诈骗被骗了怎么办 网贷利息过高怎么办 麦粒肿脓包不破怎么办 处方单丢了怎么办 深圳社保转外省怎么办 单位退休后医保怎么办 鼓楼医院就诊卡怎么办 2017个体户怎么办环评 查环保停工工人怎么办 林地己建房了怎么办 交不起环保罚款怎么办 单位没钱交社保怎么办 单位不缴医保怎么办 公司拖欠工资后注销怎么办 吸入纳米光触媒怎么办 溶解氧过低该怎么办 停水后来水浑浊怎么办 拉菜绿色通行证怎么办 烤箱下火太大怎么办