1、用eclipse创建java project,命名为jniTest
2、创建main class和native class,如下图
3、MyNative.java实现如下,链接libHelloJNI. so
package jniTest;
public class MyNative {
public MyNative() {
System.loadLibrary("HelloJNI");
}
public static native void printHello();
}
4、生成.h文件
在MyNative.java的上一级目录下执行命令
javah jniTest.MyNative
生成jniTest_MyNative.h文件
5、编写.c
#include <stdio.h>
#include "jniTest_MyNative.h"
JNIEXPORT void JNICALL Java_jniTest_MyNative_printHello(JNIEnv *env, jobject c)
{
printf("Hello JNI!!\n");
}
6、编写makefile并编译除libHelloJNI.so
BIN=libHelloJNI.so
CC=gcc
CFLAGS = -shared -fPIC
LIBS=
INCS=-I. -I /usr/lib/jvm/java-8-openjdk-amd64/include -I /usr/lib/jvm/java-8-openjdk-amd64/include/linux
SRCS:=$(wildcard *.c)
COBJS:=$(SRCS:.c=.o)
all:$(BIN)
$(COBJS) : %.o: %.c
$(CC) -c $< -o $@ $(INCS) $(CFLAGS)
$(BIN):$(COBJS)
$(CC) -o $(BIN) $(COBJS) $(LIBS) $(CFLAGS)
clean:
rm $(BIN) $(COBJS)
7、执行如下命令将libHelloJNI.so拷贝到/usr/lib目录下
sudo cp libHelloJNI.so /usr/lib
也可以将 .so放置到工程目录下,这样就不需要拷贝到/usr/lib目录下,操作如下:
a、在工程目录下建立libs目录
b、在eclipse src目录下邮件点击,选择“properties” -> “Native Library” -> "Workspace…"选择libs目录即可
8、在Main.java中编写jni调用
package jniTest;
public class Main {
public static void main(String[] args) {
MyNative myNative = new MyNative();
myNative.printHello();
}
}
运行结果如下: