JNI調用要做三件事,一使用javah命令生成C頭文件,二編寫完成本地方法生成可調用的DLL文件(Windows平臺),三java類中加載這個dll文件。
Eclipse環境下自然不能忍受手動敲命令這麼重的體力活了。我們首先要做的就是配置一個Javah命令:
打開"External Tools Configurations",這個功能在哪?告訴你在工具欄Run旁邊那個有個按鈕^_^,界面如圖:
這裏指定頭文件輸出的目錄是項目的jni目錄下,這個可自行設置。現在只需要編寫一個帶有native的類,然後執行這個命令即可生成頭文件了。
接下來是編寫本地方法,生成的本地庫文件。C/C++編譯器可自行選擇,如果使用微軟visual studio,從開始菜單打開vs的命令行輸入編譯命令cl -I c:\java\jdk1.7\include -I
c:\java\jdk1.7\include\win32 -LD E:\workspace\JniDemo\jni\HelloNative.c -FeE:\workspace\JniDemo\jni\HelloNative.dll。
-LD是要生成DLL文件,-Fe是指定dll文件名,同時這裏還需指定jdk中jni.h文件的路徑,否則是編譯不了的。當然你也可以把這幾個文件拷貝到你的.c文件相同目錄。
生成好的dll文件放在項目的根目錄下,否則會出現java加載不到dll的異常:java.lang.UnsatisfiedLinkError: no XXX in java.library.path。可是每次都要拷實在麻煩啊,當然還有解決之道了,我們可以配置項目的Build Path,打開Build Path配置Source選項卡,展開src目錄下有個Native library location將目錄指定要我們dll生成的目標文件夾即可。