经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » Java » 查看文章
JNI使用方法
来源:cnblogs  作者:敏晨  时间:2018/10/10 9:13:09  对本文有异议

JNI可以让我们在java代码中调用本地库的功能。

下面记录一下JNI简单的使用方法

  1. 创建java端接口
  1. 1 public class JNIIterface {
  2. 2
  3. 3 // 导入最终生成的dll文件
  4. 4 static {
  5. 5 System.loadLibrary("JNIDemo");
  6. 6 }
  7. 7
  8. 8 // 声明dll文件中实现的接口
  9. 9 public native int MyMethod();
  10. 10
  11. 11 public native int add(int x, int y);
  12. 12 }

  2. 生成接口对应的C的头文件

    上面创建的JNIIterface类,JNIIterface .class文件的路径:\JNIDemo\bin\base\JNIIterface .class

    在工程目录下的bin目录下执行命令:javah -classpath . -jni base.JNIIterface

    然后会在\JNIDemo\bin\目录下生成base_JNIIterface.h文件

  3. 使用visual studio编写接口的实现

    创建C工程,具体步骤如下:

      第一步:

      

      第二步:

      

      第三部:

      

    导入需要的头文件

      将上面第二步生成的头文件,以及jdk根目录下include目录下的jni.h和

    include的win32目录下的jni_md.h文件拷贝到工程目录下的头文件目录下

    创建功能实现文件

      在工程目录下源文件上右键,并点击添加-》类

      

    并编写如下代码:

  1. 1 #include "base_JNIIterface.h"
  2. 2 #include "jni.h"
  3. 3 #include <stdio.h>
  4. 4
  5. 5 JNIEXPORT jint JNICALL Java_base_JNIIterface_MyMethod
  6. 6 (JNIEnv *, jobject){
  7. 7 printf("成功实现JNI测试DEMO");
  8. 8 return 0;
  9. 9 }
  10. 10
  11. 11 JNIEXPORT jint JNICALL Java_base_JNIIterface_add
  12. 12 (JNIEnv *, jobject, jint a, jint b){
  13. 13 return a + b;
  14. 14 }

  4. 生成dll文件

    在工程目录中的「解决方案」上右键,选择属性,然后如下图所示构成项目

      

    然后编译工程后,会在工程目录下的Release目录下成成dll文件

      

      5. 将dll文件配置到java工程

      首先向dll文件放在java工程根目录下的lib目录下

      然后按照如下步骤将dll文件作为Native Library添加进工程

        

    编辑上图所示的Native Library Location,然后在弹出的界面选择Native Library所在的文件夹:

        

    6. 编写测试类,检证JNI是否成功应用

  1. 1 public class HelloJNI {
  2. 2
  3. 3 public static void main(String[] args) {
  4. 4 JNIIterface hw = new JNIIterface();
  5. 5 int t = hw.add(3, 7);
  6. 6 int s = hw.MyMethod();
  7. 7 System.out.println(t);
  8. 8 System.out.println(s);
  9. 9 }
  10. 10 }

        运行后的测试结果如下:

  1. 10
  2. 0
  3. 成功??JNI??DEMO

 

上面就是记录了使用JNI的最基本步骤。

对于如何使用已经写好的第三方dll文件的功能,比如系统的dll文件,还需要进行深入探索。

 

参考文章:http://www.runoob.com/w3cnote/jni-getting-started-tutorials.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号