Java不是完美的,Java的不足除了体现在运行速度上要比传统的C++慢许多之外,Java无法直接访问到操作系统底层(如系统硬件等),为此Java使用native方法来扩展Java程序的功能。
可以将native方法比作Java程序同C程序的接口,其实现步骤:
1、在Java中声明native()方法,然后编译;
2、用javah产生一个.h文件;
3、写一个.cpp文件实现native导出方法,其中需要包含第二步产生的.h文件(注意其中又包含了JDK带的jni.h文件);
4、将第三步的.cpp文件编译成动态链接库文件;
5、在Java中用System.loadLibrary()方法加载第四步产生的动态链接库文件,这个native()方法就可以在Java中被访问了。
JAVA本地方法适用的情况
1.为了使用底层的主机平台的某个特性,而这个特性不能通过JAVA API访问
2.为了访问一个老的系统或者使用一个已有的库,而这个系统或这个库不是用JAVA编写的
3.为了加快程序的性能,而将一段时间敏感的代码作为本地方法实现。
首先写好JAVA文件
/*
* Created on 2005-12-19 Author shaoqi
*/
package com.hode.hodeframework.modelupdate;
public class CheckFile
{
public native void displayHelloWorld();
static
{
System.loadLibrary("test");
}
public static void main(String[] args) {
new CheckFile().displayHelloWorld();
}
}
然后根据写好的文件编译成CLASS文件
然后在classes或bin之类的class根目录下执行javah -jni com.hode.hodeframework.modelupdate.CheckFile,
就会在根目录下得到一个com_hode_hodeframework_modelupdate_CheckFile.h的文件
然后根据头文件的内容编写com_hode_hodeframework_modelupdate_CheckFile.c文件
#include "CheckFile.h"
#include
#include
JNIEXPORT void JNICALL Java_com_hode_hodeframework_modelupdate_CheckFile_displayHelloWorld(JNIEnv *env, jobject obj)
{
printf("Hello world!\n");
return;
}
之后编译生成DLL文件如“test.dll”,名称与System.loadLibrary("test")中的名称一致
vc的编译方法:cl -I%java_home%\include -I%java_home%\include\win32 -LD com_hode_hodeframework_modelupdate_CheckFile.c -Fetest.dll
最后在运行时加参数-Djava.library.path=[dll存放的路径]
分享到:
相关推荐
入门$ npm install react-native-image-to-pdf --save 或者$ yarn add react-native-image-to-pdf 大多是自动安装$ react-native link react-native-image-to-pdf 手动安装的iOS 在XCode的项目导航器中,右键单击“ ...
示例项目: : 入门$ yarn add react-native-3d-model-view 进而$ react-native link react-native-3d-model-view lib还具有对等依赖关系react-native-zip-archive , rn-fetch-blob和react-native-fs 。 确保您yarn...
react-native-gpay --save 大部分是自动安装 $ react-native link react-native-gpay :police_car_light: 注意:如果您使用的是 react-native 0.60 或更高版本,则不需要链接 . 手动安装 IOS 在 XCode 中,在项目...
$ npm install react-native-secure-storage --save 或者 $ yarn add react-native-secure-storage 大多是自动安装 $ react-native link react-native-secure-storage 手动安装 的iOS 在XCode的项目导航器中,...
react-native-fs-stream 入门 $ npm install react-native-fs-stream --save 大多是自动安装 $ react-native link react-native-fs-stream 手动安装 的iOS 在XCode的项目导航器中,右键单击“ Libraries ➜ Add ...
入门$ npm install git+https://github.com/xtrycatchx/react-native-mlkit-ocr.git --save 大多是自动安装$ react-native link react-native-ml-kit-ocr 手动安装的iOS 在XCode的项目导航器中,右键单击“ ...
react-native-branch模块需要react-native >= 0.40。 纯 React Native 应用程序(使用 react-native 链接) yarn add react-native-branch或npm install --save react-native-branch (可选)将 branch.json 文件...
react-native-wifi-manager 这是用于创建本机WiFi Manager包装器的WIP。 入门 $ npm install react-native-wifi-manager --save 大多是自动安装 $ react-native link react-native-wifi-manager 手动安装 的iOS ...
笔记: 对于RN 0.60.0或更高版本,请使用react-native-ssl-pinning@latest入门$ npm install react-native-ssl-pinning --save 大多是自动安装如果您使用的是React Native 0.60.+。 在iOS中运行pod install $ react-...
react-native-tcp-socket 使用客户端SSL / TLS支持对Android,iOS和macOS的本... 由于react-native-tcp-socket提供与Node的net相同的API,因此如果要将此模块导入为net或在JavaScript中使用require('net') ,则必须将
react-native-branch模块需要react-native >= 0.40。 纯 React Native 应用程序(使用 react-native 链接) yarn add react-native-branch或npm install --save react-native-branch (可选)将 branch.json 文件...
react-native-branch模块需要react-native >= 0.40。 纯 React Native 应用程序(使用 react-native 链接) yarn add react-native-branch或npm install --save react-native-branch (可选)将 branch.json 文件...
react-native-file-viewer 本机文件查看器,用于react-native。 预览移动设备支持的任何类型的文件。 iOS :它使用 Android :它使用ACTION_VIEW Intent启动与指定文件关联的默认应用。 Windows :启动与指定文件...
react-native-branch模块需要react-native >= 0.40。 yarn add react-native-branch (可选)将 branch.json 文件添加到应用项目的根目录。 看 。 react-native link react-native-branch 使用 或 安装本机 Branch ...
$ npm install react-native-haptic-feedback --save 或者 $ yarn add react-native-haptic-feedback 连结中 $ react-native link react-native-haptic-feedback $ cd ios && pod install 或手动安装 的iOS
入门确保同时安装react-native-collapsing-toolbar和react-native-nested-scroll-view 。 $ npm install react-native-nested-scroll-view --save $ npm install react-native-collapsing-toolbar --save安装...
NfcReactNative nfc-react-native是Android的react-native模块,用于写入/读取Mifare ...将new NfcReactNativePackage()添加到getPackages()方法返回的列表中 将以下行添加到android/settings.gradle : include ':n
react-native-reactive-native-snapkit入门$ npm install react-native-react-native-snapkit --save 大多是自动安装$ react-native link react-native-react-native-snapkit 手动安装的iOS 在XCode的项目导航器中,...
react-native-camera2-android 入门 $ npm install react-native-camera2-android --save 大多是自动安装 $ react-native link react-native-camera2-android 手动安装 的iOS 在XCode的项目导航器中,右键单击“ ...
React本机自定义键盘入门$ npm install react-native-custom-keyboard --save 大多是自动安装$ react-native link react-native-custom-keyboard 手动安装的iOS 在XCode的项目导航器中,右键单击“ Libraries ➜ Add...