java中jni的使用。

Java Native Interface(JNI)是Java語言的本地編程接口,是J2SDK的一部分。在java程序中,我們可以通過JNI實現一些用java語言不便實現的功能。通常有以下幾種情況我們需要使用JNI來實現。

  • 標準的java類庫沒有提供你的應用程序所需要的功能,通常這些功能是平臺相關的
  • 你希望使用一些已經有的類庫或者應用程序,而他們並非用java語言編寫的
  • 程序的某些部分對速度要求比較苛刻,你選擇用匯編或者c語言來實現並在java語言中調用他們
第一個jni工程,以helloworld工程爲例。

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、運行。



發佈了50 篇原創文章 · 獲贊 15 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章