Ubuntu下JNI的简单使用(转)
转载:http://blog.csdn.net/fengqiaoyebo2008/article/details/6210499
1、创建一个java文件(HelloWorld.java)。
class HelloWorld {
static {
System.loadLibrary("HelloWorld");
}
private native void print();
public static void main(String args[]) {
new HelloWorld().print();
}
}
2、使用javac命令编译该java文件,在终端输入"javac HelloWorld.java"。生成HelloWorld.class.
3、使用javah命令生成头文件。在终端输入"javah -jni HelloWorld", 生成HelloWorld.h
生成的HelloWorld.h中内容如下:
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class HelloWorld */
#ifndef _Included_HelloWorld
#define _Included_HelloWorld
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: HelloWorld
* Method: print
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_HelloWorld_print
(JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif
4、使用本地方法实现头文件中的方法。
#include <jni.h>
#include <stdio.h>
#include "HelloWorld.h"
JNIEXPORT void JNICALL Java_HelloWorld_print
(JNIEnv *env, jobject obj)
{
printf("HelloWorld JNI!/n");
return;
}
5、用gcc编译生成so文件。
gcc -shared -I /home/program/jvm/jdk1.8.0_191/include/ -I /home/program/jvm/jdk1.8.0_191/include/linux/ HelloWorld.c -o libHelloWorld.so -fPIC
6、运行。
在终端输入java HelloWorld.
7、这时你会发现出问题了

这时java文件中loadlib时找不到这个so导致的,我们这样来运行:"java -Djava.library.path=. HelloWorld",通过设置java.library.path来找到这个so。

好了,到此为止,一个简单的HelloWorld就完成了。

浙公网安备 33010602011771号