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就完成了。

posted @ 2019-03-13 09:40  hbg-rohens  阅读(342)  评论(0)    收藏  举报