java中jni的使用。
来源:互联网 发布:软件图标下载 编辑:程序博客网 时间:2024/05/16 17:32
Java Native Interface(JNI)是Java语言的本地编程接口,是J2SDK的一部分。在java程序中,我们可以通过JNI实现一些用java语言不便实现的功能。通常有以下几种情况我们需要使用JNI来实现。
- 标准的java类库没有提供你的应用程序所需要的功能,通常这些功能是平台相关的
- 你希望使用一些已经有的类库或者应用程序,而他们并非用java语言编写的
- 程序的某些部分对速度要求比较苛刻,你选择用汇编或者c语言来实现并在java语言中调用他们
1、创建JNITest工程(我的工程路径为 E:\Work\MyElipse_Spring\JNITest )
2、创建HelloWorld.java文件,代码如下:
package com.jni;
public class HelloWorld {
static {
System.loadLibrary("JNITest");
}
public native void sayHello();
public static void main(String[] args) {
new HelloWorld().sayHello();
}
}
3、在eclipse好像会自动生成HelloWorld.class文件(我的路径如下:E:\Work\MyElipse_Spring\JNITest\bin\com\jni)
4、生成com_jni_HelloWorld.h的文件。
5、查看com_jni_HelloWorld.h文件的内容
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_jni_HelloWorld */
#ifndef _Included_com_jni_HelloWorld
#define _Included_com_jni_HelloWorld
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_jni_HelloWorld
* Method: sayHello
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_com_jni_HelloWorld_sayHello
(JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif
6、用C/C++编辑器生成一个JNITest.dll文件。
7、我的C/C++工程路径为(E:\Work\C++\JNITest)在JNITest目录下还有一个JNITest文件夹,把相关的文件放到该目录下。
修改com_jni_HelloWorld文件
其中jni.h和jni_md.h分别在你安装的jdk文件夹中找到。
8、编写helloworld.cpp代码
#include "jni.h"
#include "jni_md.h"
#include "com_jni_HelloWorld.h"
#include <stdio.h>
JNIEXPORT void JNICALL Java_com_jni_HelloWorld_sayHello(JNIEnv *, jobject)
{
printf("Hello world!/n");
return;
}
9、修改
9\编译生成JNITest.dll
10、往eclipse工程中导入JNITest.dll文件。
导入.dll文件的方法是:右单击项目名→导入→常规→文件系统→下一步→浏览→选择DLL文件所在目录→确定→勾选DLL文件→完成.
11、运行。
- java中jni的使用。
- Java中使用JNI
- JAVA中JNI的简单使用
- Java JNI的使用
- java jni 的使用
- Java中JNI:JNIEnv类型中方法的使用
- 【JNI】JNI中java类型的简写
- 【JNI】JNI中java类型的简写
- java中如何使用JNI调用C++写的函数
- Android中简单的JNI使用,C++调用JAVA
- 【java学习】Jni在hadoop上的使用(中)
- Java中JNI的使用详解第一篇:HelloWorld
- cocos2d-x中使用JNI的调用JAVA方法
- 使用jni实现在Java中调用C++的方法
- Java中JNI的使用详解第一篇:HelloWorld
- Java中JNI的使用详解第一篇:HelloWorld
- Java中JNI的使用详解第一篇:HelloWorld
- Java中使用JNI调用本地动态库的方法
- usb转的串口minicom的设置及乱码问题
- 最简单的线程池
- c语言控制台输出制作推箱子游戏
- TOJ 3018 ZOJ 1655 Transport Goods / dijkstra
- Batch update returned unexpected row count from update; actual row count: 0; expected: 1
- java中jni的使用。
- 时间在流逝
- Linux Driver互斥、异步通知、阻塞与非阻塞综合实例
- C++中成员初始化列表的使用
- jQuery的事件绑定命名空间
- 中国智能高清视频监控未来发展趋势
- Red Hat 配置ip地址
- MsChart的使用
- c标签获取集合的长度