Java中JNI的使用详解第一篇:HelloWorld

JNI

JNI是Java Native Interface的缩写,它提供了若干的API实现了Java和其他语言的通信(主要是C&C++)。

演示环境

  • Linux (64位)

第一步: 安装 jdk和gcc

$ sudo apt-get install openjdk-7-jdk
$ sudo apt-get install gcc

验证:

$ java -version
$ gcc -v

第二步:编写java程序

Helloworld.java

public class HelloWorld{
    static
    {
        //加载动态库
        System.loadLibrary("native");
    }
    //原生态方法
    public native void say();
    public static void main(String[] args) {

        HelloWorld world=new HelloWorld();
        world.say();
    }
}

第三步:编译

$ javac HelloWorld.java 

第四步:生成JNI头文件

$ javah HelloWorld

第五步:编辑JNI头文件

$ vim HelloWorld.h

第六步:

  • 完成JNI头文件中的原生态方法
  • 且更名为HelloWorld.c
#include <jni.h>
/* Header for class HelloWorld */

#ifndef _Included_HelloWorld
#define _Included_HelloWorld
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     HelloWorld
 * Method:    say
 * Signature: ()V
 */
//-------------------------------完成此方法-------------------------
  JNIEXPORT void JNICALL Java_HelloWorld_say
    (JNIEnv * jni, jobject obj){
    printf("%s\n", "HelloWorld!");
    }
//----------------------------------------------------------------
#ifdef __cplusplus
}
#endif
#endif

保存.

第七步:编译JNI头文件生成so动态库

linux动态库 lib + 库的名字 + .so
windows .dll

$ gcc HelloWorld.c -shared -fPIC -o libnative.so -I /usr/lib/jvm/java-7-openjdk-amd64/include/

第八步:设置程序共享库位置

$ export LD_LIBRARY_PATH=.

第九步:执行java程序

$ java HelloWorld

成功打印!

 HelloWorld!
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容