一个JNI demo的简单例子。
一、编写HelloWorldJava.java文件
public class HelloWorldJava {
//所有native关键词修饰的都是对本地的声明
public native void displayHelloWorld();
static {
System.loadLibrary("helloworld");//载入本地库
}
public static void main(String[] args) {
new HelloWorldJava().displayHelloWorld();
}
}
二、执行javac命令
javac HelloWorldJava.java
三、执行javah命令创建JNI头文件
javah HelloWorldJava
四、创建JNI实现文件
vi HelloWorldCpp.cpp
#include "HelloWorldJava.h"
#include "iostream"
/*
* Class: HelloWorldJava
* Method: displayHelloWorld
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_HelloWorldJava_displayHelloWorld
(JNIEnv *env, jobject static_or_instance) {
std::cout << "Hello World Jni in C++" << std::endl;
}
五、编译动态链接库
(1) g++ -fPIC -I/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/include/ -I/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/include/linux -c HelloWorldCpp.cpp
(2) g++ -shared -o libhelloworld.so HelloWorldCpp.o
六、执行java类
java -Djava.library.path=. HelloWorldJava