jni开发过程总结

1、写一个带有本地方法的java类

class HelloWorld {
     private native void print();
     public static void main(String[] args) {
         new HelloWorld().print();
     }
     static {
         System.loadLibrary("HelloWorld");
     }
 }

2、编译这个java类

javac HelloWorld.java

之后,会生成HelloWorld.class文件。

3、创建本地方法头文件

用javah工具创建一个JNI风格的头文件HelloWorld.h。

javah -jni HelloWorld

生成的这个头文件中的方法为

 JNIEXPORT void JNICALL 
 Java_HelloWorld_print (JNIEnv *, jobject);

这个方法包括两个参数,第一个是环境变量,第二个是HelloWorld类本身。

4、实现本地方法

根据生成的头文件,写本地方法文件HelloWorld.c。

 #include <jni.h>
 #include <stdio.h>
 #include "HelloWorld.h"
 
 JNIEXPORT void JNICALL 
 Java_HelloWorld_print(JNIEnv *env, jobject obj)
 {
     printf("Hello World!\n");
     return;
 }

5、编译C文件,创建本地库

6、运行程序

注意:需要设置到本地库的路径,否则会出现以下错误

java.lang.UnsatisfiedLinkError: no HelloWorld in library path
         at java.lang.Runtime.loadLibrary(Runtime.java)
         at java.lang.System.loadLibrary(System.java)
         at HelloWorld.main(HelloWorld.java)

 

posted on 2012-04-20 15:50  亭子  阅读(172)  评论(0编辑  收藏  举报

导航