JNI的使用大致有以下4个步骤:

一、在Java中写native方法

二、用javah命令生成C/C++头文件

三、写对应的C/C++程序实现头文件中声明的方法,并编译成库文件

四、在Java中加载这个库文件并使用

工具:

1. Eclipse for Java

2. Visual Studio 2015

依赖:

JDK和JRE:1.8.0_144版本

步骤:

在Eclipse新建一个java项目

添加一个java类,放在com.jni包下

注意:java代码都不要放到默认包下(就是不写package语句就会放到默认包),默认包下的方法在其他地方都不能调用!!

写native方法,native方法就是声明一个非java实现的方法,比如用C/C++实现

 package com.jni;

 public class JNI {
public native String getString();
}

在Eclipse生成,此时在项目目录会生成对应的.class文件,Eclipse会将.class文件放在项目目录的bin文件夹下

打开cmd,进入bin目录

运行javah命令,生成C/C++头文件,注意要带上java包名

注意:此处是在bin目录运行javah,不能进入com/jni下来运行javah,否则不能生成头文件。

此时在bin目录下生成了JNI.h头文件

头文件内容如下:

 /* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_jni_JNI */ #ifndef _Included_com_jni_JNI
#define _Included_com_jni_JNI
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_jni_JNI
* Method: getString
* Signature: ()Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_com_jni_JNI_getString
(JNIEnv *, jobject); #ifdef __cplusplus
}
#endif
#endif

接下来打开Visual studio 2015,创建一个空的win32控制台程序,在程序类型选择DLL:

配置JNI开发环境:

在【项目设置】 -> 【VC++目录】 -> 【包含目录】中,添加JNI头文件的路径

JNI头文件一般放在jdk目录下的include文件夹,还有include文件夹下的win32文件夹

注意release和debug以及32位和64位的选择

将刚刚生成的头文件复制到vs项目目录下,在项目中添加该头文件,同时添加cpp实现头文件中的函数

main.cppd代码如下:

#include "com_jni_JNI.h"

JNIEXPORT jstring JNICALL Java_com_jni_JNI_getString
(JNIEnv *env, jobject obj) {
return env->NewStringUTF("string from C++");
}

生成项目,在项目目录的x64或release文件夹下生成了JNI.dll动态库,讲dll文件复制到Eclipse项目目录下

修改JNI.java代码,加载JNI库并添加运行代码

 package com.jni;

 public class JNI {
static {
System.loadLibrary("JNI");
} public native String getString(); public static void main(String args[]) {
JNI jni = new JNI();
System.out.println(jni.getString());
}
}

生成并运行,就可以看到从c++中返回的字符串了

Windows下JNI的使用教程的更多相关文章

  1. Windows 下安装 Oracle 12c 教程

    原文 Windows 下安装 Oracle 12c 教程 申明:本文原作者:Jmq   本文给大家带来的是 Oracle 12C 的安装教程. 1.准备 1.1 下载 Oracle 12c 安装程序 ...

  2. 图解Windows下 GIT GUI 使用教程

    https://jingyan.baidu.com/article/19020a0a7ae6af529c284248.html 本篇经验将和大家介绍Windows下 GIT GUI 使用教程,希望对大 ...

  3. Windows下安装MySQL详细教程

    Windows下安装MySQL详细教程 1.安装包下载  2.安装教程 (1)配置环境变量 (2)生成data文件 (3)安装MySQL (4)启动服务 (5)登录MySQL (6)查询用户密码 (7 ...

  4. windows下安装dirmap详细教程

    今天安装一下dirmap,纯小白非常详细的安装过程 1.先去下载dirmap 下载地址:https://github.com/H4ckForJob/dirmap 点这个绿色的code,然后再点下面这个 ...

  5. windows下Gulp入门详细教程 &&gulp安装失败的原因(红色)

    以下教程亲自实践可行: 另外添加一个Gulp自动编译.压缩.更新.测试的教程链接:https://markpop.github.io/2014/09/17/Gulp%E5%85%A5%E9%97%A8 ...

  6. Windows下JNI执行步骤

    问题描述:     java JNI使用 问题解决: JNI编写步骤: (1)编写带有native声明的方法的java类     (2)使用javac编译所写的java类,然后使用javah生成扩展名 ...

  7. windows下 jdk1.7安装教程图解

    java编程的初学者在开始编码前都会遇到一个难题,那就是jdk1.7环境变量配置怎么操作,怎么安装,针对这个难题,小编特地为大家整理相关教程,不了解的朋友可以前往查看使用. 软件说明 虽然现在jdk出 ...

  8. Windows下PyInstaller的使用教程

    直接使用Python开发的软件时有许多不方便的地方,如需要安装特定的Python环境,需要安装依赖库.为了便于部署,需要将Python源代码编译成可执行文件,编译后的可执行文件就能脱离python环境 ...

  9. windows下ACE安装使用教程(转)

    ACE简介:ACE是一个跨平台的用于并发通信的C++框架.它提供了丰富的C++封装器和框架组件.使用ACE,开发者可以开发出高性能,实时的通信服务和应用.ACE利用进程间通信,事件分离,动态链接和并发 ...

随机推荐

  1. SQL注入的各种类型的检测方式

    #SQL注入各个类型检测方式 http://127.0.0.1/day6/1.php?id=1 union select 1,name,pass from admin 数字型 数字型不用特意加字符,直 ...

  2. HDU - 3697 Selecting courses

    题目链接:https://vjudge.net/problem/HDU-3697 题目大意:选课,给出每门课可以的选课时间.自开始选课开始每过五分钟可以选一门课,开始 时间必须小于等于四,问最多可以选 ...

  3. HTML5 开发APP( 环境配置)

    上一篇我写了关于新建项目,这一篇说一下配置环境我们新建一个移动app后,会发现一个mainifest.json文件,开发app所要配置的环境就在这个文件里 点击打开文件后会有配置界面,在配置界面的下方 ...

  4. 《MVC实现用户权限》

    用树形的结构显示权限的结构,树形结构的用的是jquery的控件 1. 赋给用户一个userid,在用户角色表将用户和角色关联起来,在角色权限表中将角色和权限对应起来,权限表中存储的是菜单栏的名称. 2 ...

  5. java_final修饰符

    1.修饰变量时,表示该变量一旦获得初始值就不可改变 final修饰的成员变量必须由程序员显示地指定初始值,系统不会进行隐式初始化 类变量:必须在初始化块中指定初始值或声明该类变量时指定初始值 实例变量 ...

  6. C++ STL 双端队列deque详解

    一.解释 Deque(双端队列)是一种具有队列和栈的性质的数据结构.双端队列的元素可以从两端弹出,其限定插入和删除操作在表的两端进行. 二.常用操作: 1.头文件 #include <deque ...

  7. 奇怪的道路[JXOI2012]

    题目描述 小宇从历史书上了解到一个古老的文明.这个文明在各个方面高度发达,交通方面也不例外.考古学家已经知道,这个文明在全盛时期有n座城市,编号为1..n.m条道路连接在这些城市之间,每条道路将两个城 ...

  8. Xamarin.Forms(一) Visual Studio 连接安卓模拟器(逍遥安卓)

    刚开始学习Xamarin.Forms的时候总是比较困难的,连接安卓模拟器就花了我好长时间,后来在网上找到了方法: 1.打开adb.exe所在目录: 如:cd F:\Android\android-sd ...

  9. 访问被拒绝。 说明: 访问服务此请求所需的资源时出错。服务器可能未配置为访问所请求的 URL。

    打开web.config 然后将 <authorization> <deny users="?" /> </authorization> 改为 ...

  10. 关于个人编辑器sublime text3使用指南

    用过了好多编辑器,前些年用的zend studio,phpstorm近两年转为nodepad++(因为写的语言种类比较多了,shell,python,php,前端等),相对于nodepad++,  s ...