我的所有文件的目录在/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
", 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,为了教学需要,更加详细的予以说明。