版本信息
GetVersion
jint GetVersion(JNIEnv *env);
參數
env:JNI 接口指針。
返回值:
高 16 位返回主版本號,低 16 位返回次版本號。
在 JDK1.1 中,GetVersion()
返回 0x00010001。
類操作
DefineClass
jclass DefineClass(JNIEnv *env, jobject loader,
const jbyte *buf, jsize bufLen);
參數:
env:JNI 接口指針。
返回值:
返回 Java 類對象。如果出錯則返回NULL
。
拋出:
ClassFormatError:如果類數據指定的類無效。
ClassCircularityError
:如果類或接口是自身的超類或超接口。
FindClass
jclass FindClass(JNIEnv *env, const char *name);
該函數用於加載本地定義的類。它將搜索由CLASSPATH
環境變量爲具有指定名稱的類所指定的目錄和 zip 文件。
參數:
env:JNI 接口指針。
name
:類全名(即包名後跟類名,之間由“/
”分隔)。如果該名稱以“[
”(數組簽名字符)打頭,則返回一個數組類。
返回值:
返回類對象全名。如果找不到該類,則返回 NULL
。
拋出:
ClassFormatError:如果類數據指定的類無效。
ClassCircularityError
:如果類或接口是自身的超類或超接口。
NoClassDefFoundError
:如果找不到所請求的類或接口的定義。
GetSuperclass
jclass GetSuperclass(JNIEnv *env, jclass clazz);
如果 clazz
代表類而非類 object
,則該函數返回由 clazz
所指定的類的超類。
如果 clazz
指定類 object
或代表某個接口,則該函數返回NULL
。
參數:
env:JNI 接口指針。
返回值:
由 clazz
所代表的類的超類或 NULL
。
IsAssignableFrom
jboolean IsAssignableFrom(JNIEnv *env, jclass clazz1,
jclass clazz2);
確定 clazz1
的對象是否可安全地強制轉換爲clazz2
。
參數:
env:JNI 接口指針。
返回值:
下列某個情況爲真時返回 JNI_TRUE
:
異常
Throw
jintThrow(JNIEnv *env, jthrowable obj);
參數:
env:JNI 接口指針。
返回值:
成功時返回 0,失敗時返回負數。
拋出:
java.lang.Throwable
對象 obj
。
ThrowNew
jint ThrowNew(JNIEnv *env, jclass clazz,
const char *message);
利用指定類的消息(由 message
指定)構造異常對象並拋出該異常。
參數:
env:JNI 接口指針。
clazz
:java.lang.Throwable
的子類。
message
:用於構造java.lang.Throwable
對象的消息。
返回值:
成功時返回 0,失敗時返回負數。
拋出:
新構造的 java.lang.Throwable
對象。
ExceptionOccurred
jthrowable ExceptionOccurred(JNIEnv *env);
確定是否某個異常正被拋出。在平臺相關代碼調用 ExceptionClear()
或 Java 代碼處理該異常前,異常將始終保持拋出狀態。
參數:
env:JNI 接口指針。
返回值:
返回正被拋出的異常對象,如果當前無異常被拋出,則返回NULL
。
ExceptionDescribe
void ExceptionDescribe(JNIEnv *env);
將異常及堆棧的回溯輸出到系統錯誤報告信道(例如 stderr
)。該例程可便利調試操作。
參數:
env:JNI 接口指針。
ExceptionClear
void ExceptionClear(JNIEnv *env);
清除當前拋出的任何異常。如果當前無異常,則此例程不產生任何效果。
參數:
env:JNI 接口指針。
FatalError
void FatalError(JNIEnv *env, const char *msg);
參數:
env:JNI 接口指針。
全局及局部引用
NewGlobalRef
jobject NewGlobalRef(JNIEnv *env, jobject obj);
創建 obj
參數所引用對象的新全局引用。obj
參數既可以是全局引用,也可以是局部引用。全局引用通過調用 DeleteGlobalRef()
來顯式撤消。
參數:
env:JNI 接口指針。
返回值:
返回全局引用。如果系統內存不足則返回 NULL
。
DeleteGlobalRef
void DeleteGlobalRef(JNIEnv *env, jobject globalRef);
參數:
env:JNI 接口指針。
DeleteLocalRef
void DeleteLocalRef(JNIEnv *env, jobject localRef);
刪除 localRef
所指向的局部引用。
參數:
env:JNI 接口指針。