IDEA開發,Jni中javah使用方式的探索

柴月和岐月發表於2017-09-15

 

javah個人認為只是一個幫助我們便捷生成.h標頭檔案的工具而已,而不需要去build生成class什麼的,只需要.java檔案裡面的內容而已。而.java檔案裡面你寫的native方法和build之後.class檔案裡的內容並沒有不同,懷著這樣的想法,進行了下面的測試。

1.正確的做法

 

目錄如下,

1.開啟終端,進入java目錄(開啟終端預設是專案的根目錄,.代表當前目錄,..代表父目錄):cd ./src/main/java

2.完整的命令如下:javah -d ./jni  -jni -classpath . HelloWorld.HelloJNI

下面詳細解釋這個命令:

1.使用javah:javah命令在你安裝的JDK路徑下的bin目錄裡,假如你環境變數配置正確的話, 這一步是沒有問題的

2.-jni: 使 javah 建立一輸出檔案,該檔案包含 JNI 風格的本地方法函式原型,這是預設輸出,所以 -jni 的使用是可選的。其中,-jni是javah預設的模式,所以,是可以省略的

3.-classpath: 這裡分為兩部分,第一部分是指定查詢你需要生成.h標頭檔案的.java或.class檔案的目錄,這一步經測試,在你用相對路徑時必須要在包外進行,以上圖為例,你不能進入HelloWorld路徑下進行avah -d ./jni -jni -classpath . HelloJNI命令,雖然在檔案儲存上他也是個資料夾,但在這裡面他是包pakage,其中多個路徑用“;”隔開。第二部分是指定.java或.class檔案,多個檔案用空格隔開

4.-d:生成.h標頭檔案的目錄,若不指定的話則預設為當前使用此javah命令的目錄。-d一般放在-classpath前面,因為-classpath會一直監測後面的路徑,所以如果-d在-classpath後面的話需要這麼用。javah -jni -classpath 路徑1;路徑2;等待路徑路徑;-d 儲存路徑 HelloWorld.HelloJNI等.java .class檔案

說完了之後,那麼你就能理解,最為直接的命令就是javah -classpath .(這有個點) HelloWorld.HelloJNI就能生成標頭檔案了

2.使用External Tools一鍵生成

External Tools是Intelli J工具(IDEA和Android Studio都是基於它開發的)裡提供的行動式命令工具。

File-》setting-》Tools-》External Tools進入編輯新增命令頁面

 

show in可以選擇它出現的地方,下面來使用它

 

可以看見很輕鬆的幫我們生成了標頭檔案

 

相關文章