javah导出类的头文件抛出异常——java.lang.IllegalArgumentException: Not a valid class name(原因及解决方法)
【0】README
0.1) 本文旨在給出 java.lang.IllegalArgumentException 異常的原因 和 處理方法, 該異常和 javah 沒有半毛錢關系 ;
0.2) 本文附帶地給出了 javah 的作用 和 java 調用本地代碼(如 C語言)的相關知識;
【1】intro to javah (java 調用本地代碼(如C)相關)
1)重載本地方法: 如果你重載本地方法, 也就是說, 你用相同的名字提供多個本地方法, 那么你必須在名稱后面附加兩個下劃線, 后面再加上已編碼的參數類型;
2) 看個荔枝: 如果你有一個本地方法 greeting 和 本地方法 greeting(int repeat), 那么第一個稱為
Java_HelloNative_greeting__, 第二個稱為 Java_HelloNative_greeting_I;
3)javah程序:沒有人完成這些手工操作, javah 自動生成函數名,即javah導出類的頭文件; (干貨——javah 的功能)
4)具體荔枝:
- 4.1)java 類 如下:
4.2)編譯該java 類:
4.3)利用 javah 自動生成函數名(javah [your package].HelloNative 會產生一個頭文件 如 com_corejava_chapter12_HelloNative.h)
4.4) source code of com_corejava_chapter12_HelloNative.h at a glance
/* DO NOT EDIT THIS FILE - it is machine generated */#include <jni.h>/* Header for class com_corejava_chapter12_HelloNative */#ifndef _Included_com_corejava_chapter12_HelloNative#define _Included_com_corejava_chapter12_HelloNative#ifdef __cplusplusextern "C" {#endif/** Class: com_corejava_chapter12_HelloNative* Method: greeting* Signature: ()V*/ JNIEXPORT void JNICALL Java_com_corejava_chapter12_HelloNative_greeting(JNIEnv *, jclass);#ifdef __cplusplus}#endif#endif
5)拋出異常原因: 編譯器對文件(帶有文件分隔符 和 擴展名.java 的文件)進行操作, 而java 解釋器加載類(帶有點(.)分隔符; for detailed spec, please visit section 4(‘將類放入包中’) in http://blog.csdn.net/pacosonswjtu/article/details/49536995
總結
以上是生活随笔為你收集整理的javah导出类的头文件抛出异常——java.lang.IllegalArgumentException: Not a valid class name(原因及解决方法)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 冰箱冬季开关怎么设置(冰箱冬季开关怎么设
- 下一篇: 怎样设置接收邮件规则(outlook怎么