PS:最近在用jni,一會寫java一會寫c++的感覺真讓人頭疼。然後在使用javah的時候,遇到了一點點小問題,分享給大家。
javah 是一個很棒的工具,可以通過獲取.class 文件,而生成對應的C++文件,其中包含java 代碼中的所有本地方法的JNI 存根,也就是定義成native 的那些方法。如果你正在使用一個類的JNI 存根,而且你已經把這個類定義為包的一部分,那麼必須要完全限定類的命名。感覺javah好像一個反編譯工具一樣。恩,就是這樣。
舉例說明,我在用eclipse編寫一個java文件,隨後eclipse編譯生成一個.class文件,在bin 目錄下,於是我果斷進入我的文件夾中,XX/XXXX/XXX 裡面有我的 .class文件,於是我按照指令,javah -jni XX.XXXX.XX.類名,結果他提示我找不到‘XX.XXXX.XX.類名’的類文件。:
於是退出到 bin目錄下,重新輸入那個指令,得到了同樣的答案!
郁悶怎麼樣才能解決,後來找到答案,首先要保證目錄是 java包的上一級路徑,如果是eclipse編譯的話,那麼就是在bin目錄下了,使用指令
javah -classpath . XX.XXXX.XXX.CLASSNAME
就可以了!!注意中間一個單獨的小數點!然後你就能得到你生成的.h 文件了!!
《C++ 設計新思維》 下載見 http://www.linuxidc.com/Linux/2014-07/104850.htm
C++ Primer Plus 第6版 中文版 清晰有書簽PDF+源代碼 http://www.linuxidc.com/Linux/2014-05/101227.htm
讀C++ Primer 之構造函數陷阱 http://www.linuxidc.com/Linux/2011-08/40176.htm
讀C++ Primer 之智能指針 http://www.linuxidc.com/Linux/2011-08/40177.htm
讀C++ Primer 之句柄類 http://www.linuxidc.com/Linux/2011-08/40175.htm
將C語言梳理一下,分布在以下10個章節中: