用C++实现一个Java本地方法

大家好,我是程序员阿药。今天和大家分享的是如何实现一个Java本地方法。

所谓Java本地方法,其实就是用native关键字修饰的方法,在JDK源码中也比较常见。

本地方法就像是一个接口一样,只需要声明而不需要具体实现。它的实现是交由本地语言来实现的,本地语言我个人理解就是可以直接与操作系统交互的语言。

下面我将使用C++实现一个Java的本地方法,实现之前先说一下什么是JNI。

JNI,Java Native Interface,它是Java的SDK一部分,JNI允许Java代码使用以其他语言编写的代码和代码库,本地程序中的函数也可以调用Java层的函数,即JNI实现了Java和本地代码间的双向交互。

也就是说,Java本地方法的实现是通过JNI调用C++的代码。

实现步骤

1. 创建一个Java类,写一个本地方法,通过静态代码块加载需要的.dll文件(Windows环境),如果是Linux环境需要加载的是.so文件,除了使用加载的方式外也可以使用配置环境变量的方式,这里选择前者。需要的.dll文件是后面通过C++代码生成的。

2. 找到TestNativeMethod的CLASSPATH下,通过cmd进入。执行命令:"javah -jni com.study.nativeMethod.TestNativeMethod"。执行后在CLASSPATH下会生成一个.h文件。

3. 用Visual Studio创建一个名为Result的DLL工程。

4. 将.h文件复制到工程文件目录Result的下面。

5. 在Result工程中右击头文件>添加>现有项,将.h文件导入。修改.h文件中的#include <jni.h>为#include "jni.h"。

6. 把%JAVA_HOME%/include目录下的"jni.h"和win32目录下的"jni_md.h"两个文件复制到Result目录下面。JAVA_HOME就是JDK安装目录,不知道的可以通过cmd进入命令行,然后输入echo %JAVA_HOME查看。

7. 在Result工程中右击头文件>添加>现有项,将jni.h文件和jni_md.h文件导入。右击源文件>添加>新建项,创建一个source.cpp文件。

8. 在source.cpp中引入生成的.h文件,实现.h文件中的头函数。此处的实现其实就是Java本地方法的具体实现。

9. 右击项目>生成,就可以生成.dll文件了。将.dll文件复制到静态代码块中指定的目录下即可。

10. 执行Java的main方法,调用所写的本地方法即可看到控制台输出:"Success!"。

  • 15
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值