项目需要,在linux平台下的第一个JNI调用测试程序:
1.编写JAVA程序如下:
public class JniTest
{
public native void display();
static
{
System.loadLibrary("jnitest");
}
public static void main(String[] args)
{
JniTest test=new JniTest();
test.display();
}
}
{
public native void display();
static
{
System.loadLibrary("jnitest");
}
public static void main(String[] args)
{
JniTest test=new JniTest();
test.display();
}
}
2.编译
使用javac JniTest.java得到JniTest.class文件
3.生成JniTest.h头文件
javah JniTest.java
生成的头文件JniTest.h如下所示:
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class JniTest */
#include <jni.h>
/* Header for class JniTest */
#ifndef _Included_JniTest
#define _Included_JniTest
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: JniTest
* Method: display
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_JniTest_display
(JNIEnv *, jobject);
#define _Included_JniTest
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: JniTest
* Method: display
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_JniTest_display
(JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif
}
#endif
#endif
4.编写JniTest.c 文件
#include <jni.h>
#include "JniTest.h"
#include "JniTest.h"
JNIEXPORT void JNICALL Java_JniTest_display(JNIEnv * env , jobject obj)
{
printf("hello,jnitest\n");
}
{
printf("hello,jnitest\n");
}
5.编译生成动态库
gcc -c JniTest.c 生成JniTest.o文件
gcc -shared -fPIC -o libjnitest.so JniTest.o
注意:库的名字与JAVA文件中载入的库名要一致。
6.结果:
root@ubuntu2:/java# java JniTest
hello,jnitest
hello,jnitest
完!
转载于:https://blog.51cto.com/lsjwy/350167