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

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

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

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

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

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

重庆达渝仁科技官网:HYPERLINK"http://www.cqdyr.com"www.cqdyr.com 我们知道Java是一种平台无关性的语言,平台对于上层的java代码来说是透明的,所以在多数时间我们是不需要调用本地方法,但是假如你遇到了以下情况,你可能就需要使用Java调用本地方法了: 你的Java代码需要得到一个文件的属性。但是你找遍了JDK帮助文档也找不到相关的API。 在本地还有一个别的系统,不过它不是Java语言实现的,这个时候你需要把两套系统整合到一起。 你的Java代码中需要用到某种算法,不过算法是用C实现并封装在动态链接库文件(DLL)当中的。 对于上述的三种情况,如果没有JNI的话,那就会变得异常棘手了。JNI其实是JavaNativeInterface的简称,也就是java本地接口。它提供了若干的API实现了和Java和其他语言的通信(主要是C&C++)。 在Java中有一些native方法,这些方法只有方法签名但是没有方法体。其实这些naive方法就是我们说的javanativeinterface。它提供了一个调用(invoke)的接口,然后用C或者C++去实现。 JNI概述 JVM封装了各种操作系统实际的差异性的同时,提供了JNI技术,它是一种双向的接口,使得开发者可以通过Java代码调用到各种native的库,反之亦然。所以JNI(JavaNativeInterface)能作为Java语言的一部分,她能够作为粘合剂将Java应用和其他本地应用(C/C++,Delphi)集合在一起。 作为一个双向的接口,JNI能支持两种native代码:nativelibraries和nativeapplications。 你能使用JNI去写一些nativemethods去允许JavaApplications能呼叫nativelibraries中的函数,nativemethods的具体实现是可能C,C++或者Delphi。 JNI也支持嵌入一个JVM实现到一个本地应用程序中去,去执行那些用Java语言编写的的模块.比如,一个C++编写的浏览器利用内嵌的JVM去执行下载到本地的applet。 实现步骤: 1)完成Java代码,编写好Java调用类。 2)编译你的Java类。 3)用javah生成编译好的class文件对应的C/C++函数的头文件。 4)实现头文件中的函数原型,编写native代码。 5)将native代码编译打包成DLL库(win32)或共享库(Linux)。 6)将你的Java代码跑起来 例子 1.编写Java代码。 注意: (1)调用本地代码的java方法,要设置成native的。 (2)要使用System的LoadLibrary方法去加载包含本地方法实现的库。 Java代码: [java]HYPERLINK"http://blog.csdn.net/jxhgh/article/details/40616469"\o"viewplain"viewplainHYPERLINK"http://blog.csdn.net/jxhgh/article/details/40616469"\o"copy"copyHYPERLINK"http://blog.csdn.net/jxhgh/article/details/40616469"\o"print"printHYPERLINK"http://blog.csdn.net/jxhgh/article/details/40616469"\o"?"? packageeric.test; publicclassJNITest{ static{ System.loadLibrary("JNITest"); } publicstaticnativevoidsayHelloWorld(Stringmsg); publicstaticvoidmain(String[]args){ sayHelloWorld("Hello,world"); } } packageeric.test; publicclassJNITest{ static{ System.loadLibrary("JNITest"); } publicstaticnativevoidsayHelloWorld(Stringmsg); publicstaticvoidmain(String[]args){ sayHelloWorld("Hello,world"); } } 2.编译生成的class文件:JNITest.class 3.在命令行下使用javah生成C/C++头文件。在工程的bin目录下输入以下命令: Cmd代码: javah