预览加载中,请您耐心等待几秒...
1/4
2/4
3/4
4/4

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

确保gcc编译器已安装 编写FileUtil.java代码,用native声明需要用c实现的函数。 如果源程序是包含在package的话,应该建立同样的文件夹结构,如com/hnrbyl/rmas/util/FileUtil.java 【代码】 packagecom.hnrbyl.rmas.util; publicclassFileUtil{ publicnativestaticStringResultText(); publicstaticvoidmain(String[]args){ System.loadLibrary("FileUtil"); Strings=FileUtil.ResultText(); System.out.println(s); } } 在FileUtil.java文件所在目录下编译.java文件 JavacFileUtil.java 编译第三步生成的.class文件,生成对应的.h头文件,本例中生成com_hnrbyl_rmas_util_FileUtil Javah–classpath~workspace\elect\WebRoot\WEB-INF\classes-dd:\-jnicom.hnrbyl.rmas.util.FileUtil 其中java中各个命令的意思 -classpath<路径>用于转入类的路径 -d<目录>输出目录 -jni生成JNI样式的头文件(默认) 这个Java文件是在路径“E:\workspace\elect\src”下,包“packagecom.hnrbyl.rmas.util;”中的 得到的FileUtil对应的class文件,在路径“E:\workspace\elect\WebRoot\WEB-INF\classes\com\hnrbyl\rmas\util”下。 注意到以上我们命令中指定的路径 注意到我们的命令符的执行位置是源代码目录”E:\workspace\elect\src\” -classpath后面的路径是指包”com.hnrbyl.rmas.util”所在的根路径(如下图所示) 第四部中生成的头文件内容 【代码】 /*DONOTEDITTHISFILE-itismachinegenerated*/ #include"jni.h" /*HeaderforclassFileUtil*/ #ifndef_Included_com_hnrbyl_rmas_util_FileUtil #define_Included_com_hnrbyl_rmas_util_FileUtil #ifdef__cplusplus extern"C"{ #endif /* *Class:FileUtil *Method:ResultText *Signature:(I)I */ JNIEXPORTjstringJNICALLJava_com_hnrbyl_rmas_util_FileUtil_ResultText(JNIEnv*, jobject); #ifdef__cplusplus } #endif #endif 编写FileUtil.c文件,实现引用第4步中生成的.h头文件,并声明其中的方法。 【代码】 #include"jni.h" #include"stdlib.h" #include"FileUtil.h" // JNIEXPORTjstringJNICALLJava_com_hnrbyl_rmas_util_FileUtil_ResultText(JNIEnv*env, jobjectobj) { char*str="HelloWorld!"; jstringrtn; rtn=env->NewStringUTF(str); returnrtn; } 讲第6步中编写的FileUtil.c文件,编译成.so文件 gcc-I/wenjin/jdk1.7.0_25/include/-I/wenjin/jdk1.7.0_25/include/linux/-fPIC-shared-olibFileUtil.soFileUtil.c注:/wenjin/jdk1.7.0_25/include是jni.h头文件所在的路径/wenjin/jdk1.7.0_25/include/linux是jni_md.h所在的路径 将第7步中生成的libFileUtil.so文件拷贝到java的加载库LD_LIBRARY_PATH指向的路径中。 在运行FileUtil.class 在com.hnrbyl.rmas.util跟目录src下运行 Javacom.hnrbyl.rmas.util.FileUtil 一切正常后,可