java JNI入門一

來源:互聯網
上載者:User
JAVA基礎之理解JNI原理(轉載+修改)JNI是JAVA標準平台中的一個重要功能,它彌補了JAVA的與平台無關這一重大優點的不足,在JAVA實現跨平台的同時,也能與其它語言(如C、C++)的動態庫進行互動,給其它語言發揮優勢的機會。有了JAVA標準平台的支援,使JNI模式更加易於實現和使用。在此總結了下面這個知識圖:環境說明:ubuntu 11.04

第一步:
程式1 src/com/magc/jni/HelloWorld.java

class HelloWorld{private native void print();public static void main(String[] args){new HelloWorld().print();}static{System.loadLibrary("Hello");//後來產生庫時候,為此libHello.so}}


編譯HelloWorld.java

在命令列中運行如下命令:

javac HelloWorld.java


第二步:

產生HelloWorld.h

在命令列中運行如下命令:

javah -jni HelloWorld

在當前檔案夾中會產生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 __cplusplusextern "C" {#endif/* * Class:     HelloWorld * Method:    print * Signature: ()V */JNIEXPORT void JNICALL Java_HelloWorld_print  //Java_HelloWorld_print此函數為後來c檔案中申明使用,要一致  (JNIEnv *, jobject);#ifdef __cplusplus}#endif#endif

實現HelloWorld.c

建立HelloWorld.c檔案輸入如下的代碼:

#include <jni.h>#include <stdio.h>#include "HelloWorld.h"JNIEXPORT void JNICALL     Java_HelloWorld_print(JNIEnv *env, jobject obj){printf("Hello World!\n");}


第三步:

編譯產生libHelloWorld.so

在Linux下執行如下命令來完成編譯工作:

cc -I/usr/lib/jvm/java-6-sun/include/linux/   -I/usr/lib/jvm/java-6-sun/include/    -fPIC -shared -o libHello.so HelloWorld.c


(上面的命令為一行,不要直接複製,libHello.so 為java中System.loadLibrary("Hello")的名稱相對應


第四步驟
聲明庫地址

java -Djava.library.path='.' HelloWorld


編譯成功

yy@yy:~/androd_jin/hellowrold/src$ java -Djava.library.path=. com.magc.jni.HelloWorld
From jni_helloworldImpl.cpp :Hello world !


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.