教学生jni编程(一)

我的所有文件的目录在/home/michelle/WORKM/DAYCODE/day0426/,请根据个人情况适当调整

1)创建一个HelloWorld.Java文件,如下:

public class HelloWorld {
    static{
        System.load("/home/michelle/WORKM/DAYCODE/day0426/libhelloWorld.so");
    }
    public HelloWorld(){
    }
    public native void sayHello(String message);                                      //表明是本地语言的函数声明
}

2)编译HelloWorld.java生成HelloWorld.class文件

 javac HelloWorld.java

3)使用如下命令生成HelloWorld.h文件

javah -jni HelloWorld 

4)创建一个HelloWorld.cpp的文件如下:

#include  <stdio.h>

#include  <String.h>
#include "HelloWorld.h"

JNIEXPORT void JNICALL Java_HelloWorld_sayHello(JNIEnv * env, jobject obj, jstring name) {
    jboolean isCopy;
    const char * pname = env->GetStringUTFChars(name,&isCopy);
    int len = strlen(pname);
    printf("Hello,%s\n", pname);
    env->ReleaseStringUTFChars(name,(const char *)pname);


    return;
}

5)使用如下命令编译生成libhelloWorld.so文件

 g++ -I /usr/lib/jvm/java
-8-openjdk/include -I /usr/lib/jvm/java-8-openjdk/in
clude/linux -fPIC -c HelloWorld.cpp                  //注意红色的是一行代码

g++ -shared  -o libhelloWorld.so HelloWorld.o 

6)创建一个JNIClient.java文件如下:

public class JNIClient{
    public static void main(String argv[]){
        HelloWorld h = new HelloWorld();
        h.sayHello("World");
    }

}

 7)编译生成JNIClient.class文件

 javac JNIClient.java

8)用java JNIClient测试是否成功。

java JNIClient运行即可,成功OK。

 主要内容框架参考http://blog.csdn.net/huoyin/article/details/3006772,为了教学需要,更加详细的予以说明。

posted @ 2016-04-26 21:53  叕叒双又  阅读(109)  评论(0编辑  收藏  举报