首页 | 联系我们 | 叶凡网络官方QQ群:323842844
游客,欢迎您! 请登录 免费注册 忘记密码
您所在的位置:首页 > 开发语言 > Java开发 > 正文

Java的native方法实现(JNI)

作者:名扬互联 来源: 日期:2013-07-25 01:56:25 人气:9 加入收藏 评论:0 标签:java jni

在网上找了点资料,但不详细,现在我实现了,就详细的跟大家共享下:

JNI(Java Native Interface)的实现步骤:

(1),用java写一个Native方法:(如下)

------------------------- HelloWorld.java ------------------------------

class HelloWorld{

public native void print();

static{
  System.loadLibrary("hello");
}

public static void main(String args[]){
  new HelloWorld().print();
}
}

---------------------------------------------------------------------------

(2),在dos下编译javac HelloWorld.java(环境变量要设置好)

(3),在dos下运行javah -jni HelloWorld

(4),这时候生成一个HelloWorld.h文件:(如下)

------------------------- HelloWorld.h ------------------------------

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class HelloWorld */

#ifndef _Included_HelloWorld
#define _Included_HelloWorld
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class:     HelloWorld
* Method:    print
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_HelloWorld_print
(JNIEnv *, jobject);

#ifdef __cplusplus
}
#endif
#endif

---------------------------------------------------------------------------

注意这将这个方法实现了:(如下)

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class HelloWorld */

#ifndef _Included_HelloWorld
#define _Included_HelloWorld
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class:     HelloWorld
* Method:    print
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_HelloWorld_print
(JNIEnv *, jobject)

{

printf("Hello Java Native Method.\n");

}

#ifdef __cplusplus
}
#endif
#endif

---------------------------------------------------------------------------

(5),打开VC++编译器:

       点击“新建”--“工程”--“Win32 Dynamic-Link Library”,工程名键入hello.(这里和我们编写的java文件中的System.loadLibrary("hello");所载入的名称要一样),然后一路默认到完成。

       然后到“新建”文件“C++ Source File ” 命名HelloWorld将刚才那个实现的方法拷贝到这个cpp文件中。

(6),修改编译器的头文件:

单击“工具”,打开“选项”,如图:

将JDK中的include文件夹和include下的win32加入到include files。(这里是用java提供的jni.h等文件)

(7),单击“组件”--“组件[hello.dll]

(8),将生成的hello.dll拷贝到和HelloWorld.java同一个文件夹下

(9),运行java HelloWorld(简单的JNI就实现了)。


本文网址:http://www.mingyangnet.com/html/java/111.html
读完这篇文章后,您心情如何?
  • 0
  • 0
  • 0
  • 0
  • 0
  • 0
  • 0
  • 0
更多>>网友评论
发表评论
编辑推荐
  • 没有资料