java jni编程详细步骤及注意细节
2013-12-17 17:20
134 查看
第一步:
编写init.java文件
注意:init.java 文件放在文件系统中的目录结构应该是~/jni/com/dbc/yangg/init.java
第二步:
进入~/jni/com/dbc/yangg/目录使用命令编译init.java文件生成init.class文件
进入~/jni/使用命令生成c/c++ core head文件
第四步:
由于我们在java里面调用的动态类库名为MyJni,使用命令mv com_dbc_yangg_init.h MyJni.h将生成的com_dbc_yangg_init.h重命名为MyJni.h,并编写MyJni.c实现MyJni.h中
MyJni.c代码示例如下:
在目录~/jni/下使用命令生成动态链接库
说明:
执行完后将在~/jni/目录下生成libMyJni.so 及是我们需要的动态链接库
第六步:
运行测试:进入目录~/jni/输入命令
运行结果如下:
编写init.java文件
package com.dbc.yangg; public class init{ public native void print(String str); static{ System.loadLibrary("MyJni"); } public static void main(String[] argv){ System.out.println("hello"); new init().print("jni callback!"); } }
注意:init.java 文件放在文件系统中的目录结构应该是~/jni/com/dbc/yangg/init.java
第二步:
进入~/jni/com/dbc/yangg/目录使用命令编译init.java文件生成init.class文件
javac init.java第三步:
进入~/jni/使用命令生成c/c++ core head文件
javah -jni com.dbc.yangg.init将在 ~/jni/目录下生成com_dbc_yangg_init.h的c/c++ core head 文件内容如下
/* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class com_dbc_yangg_init */ #ifndef _Included_com_dbc_yangg_init #define _Included_com_dbc_yangg_init #ifdef __cplusplus extern "C" { #endif /* * Class: com_dbc_yangg_init * Method: print * Signature: (Ljava/lang/String;)V */ JNIEXPORT void JNICALL Java_com_dbc_yangg_init_print (JNIEnv *, jobject, jstring);//需要实现的方法 #ifdef __cplusplus } #endif #endif
第四步:
由于我们在java里面调用的动态类库名为MyJni,使用命令mv com_dbc_yangg_init.h MyJni.h将生成的com_dbc_yangg_init.h重命名为MyJni.h,并编写MyJni.c实现MyJni.h中
JNIEXPORT void JNICALL Java_com_dbc_yangg_init_print(JNIEnv *, jobject, jstring)方法
MyJni.c代码示例如下:
#include "MyJni.h" #include <stdio.h> JNIEXPORT void JNICALL Java_com_dbc_yangg_init_print (JNIEnv *env, jobject obj, jstring jstr){ char *cstr=(char *)(*env)->GetStringUTFChars(env,jstr,NULL); printf("%s\n",cstr); }第五步:
在目录~/jni/下使用命令生成动态链接库
gcc -fPIC -shared -o libMyJni.so MyJni.c -I/usr/java/jdk-1.6.0_u45/include -I/usr/java/jdk-1.6.0_u45/include/linux -I.注意:动态链接库so文件前缀必须是以lib开头
说明:
/usr/java/jdk-1.6.0_u45 为jdk的安装路径 主要是加载jni.h文件 $JDK_HOME/include/linux 系统类型
执行完后将在~/jni/目录下生成libMyJni.so 及是我们需要的动态链接库
第六步:
运行测试:进入目录~/jni/输入命令
java -Djava.library.path=/home/hadoopadmin/jni/com/dbc/yangg/ com.dbc.yangg.init
运行结果如下:
hello jni callback!说明配置成功
相关文章推荐
- 整合struts2+hibernate详细配置步骤及注意事项
- 如何重装系统?重装系统详细步骤及注意事项(以Windows7为例)
- TD 8.0 邮件自动发送配置详细步骤及注意重点
- JavaScript初学者应注意的七个细节详细介绍
- 小白安装中文CentOS 6.5的详细步骤及要注意点
- linux的安装步骤和安装过程中需要注意的细节图解
- Eclipse中创建maven web工程详细步骤以及注意事项
- Android项目使用极光推送时步骤及注意的细节
- ftell、fread、fseek、feof 详细的使用介绍与注意细节
- Eclipse下配置Tomcat详细步骤和需要注意的问题
- 安装中文CentOS 6.5的详细步骤及要注意点
- android APP集成系统详细步骤及注意事项(amlogic平台)
- JavaScript初学者应注意的七个细节详细介绍
- jQuery中需要注意的细节问题小结 详细出处参考:http://www.jb51.net/article/29076.htm
- 【JavaScript】(4)普通函数、动态函数定义格式,调用方式,注意的详细细节
- VM6.0.2.59824下载.汉化.注册码+主机和虚拟机同时上网的详细教程+VM虚拟机汉化的步骤注意事项
- OGG新增表下发详细步骤及相关注意事项
- 邮件自动发送配置详细步骤及注意重点
- 整合struts2+hibernate详细配置步骤及注意事项
- 在ListBox中实现右键菜单,需要注意的细节