1.jni.h頭文件路徑:
/usr/lib/jvm/jdk_1.6.0_43/include/jni.hjava
2.jni.h頭文件組成分析圖:

3.下面經過上圖進行分析講解jni.h頭文件.
一. jni規範中定義的基本數據類型.數組
- #define JNIEXPORT
- #define JNIIMPORT
- #define JNICALL
-
- typedef int jint;
- #ifdef _LP64 /* 64-bit Solaris */
- typedef long jlong;
- #else
- typedef long long jlong;
- #endif
- typedef signed char jbyte;
- typedef unsigned char jboolean;
- typedef unsigned short jchar;
- typedef short jshort;
- typedef float jfloat;
- typedef double jdouble;
- typedef jint jsize;</span>
4.jni標準定義的數組類型。
- struct _jobject;
- typedef struct _jobject *jobject;
- typedef jobject jclass;
- typedef jobject jthrowable;
- typedef jobject jstring;
- typedef jobject jarray;
- typedef jarray jbooleanArray;
- typedef jarray jbyteArray;
- typedef jarray jcharArray;
- typedef jarray jshortArray;
- typedef jarray jintArray;
- typedef jarray jlongArray;
- typedef jarray jfloatArray;
- typedef jarray jdoubleArray;
- typedef jarray jobjectArray;
5.方法簽名時用到的公共體類型。
- typedef union jvalue {
- jboolean z;
- jbyte b;
- jchar c;
- jshort s;
- jint i;
- jlong j;
- jfloat f;
- jdouble d;
- jobject l;
- } jvalue;</span>
6.屬性Id的定義。
- struct _jfieldID;
- typedef struct _jfieldID *jfieldID;
7.方法Id的定義。
- struct _jmethodID;
- typedef struct _jmethodID *jmethodID;
8.幾種不一樣類型引用的定義。
- Return values from jobjectRefType
- typedef enum _jobjectType {
- JNIInvalidRefType = 0,
- JNILocalRefType = 1,
- JNIGlobalRefType = 2,
- JNIWeakGlobalRefType = 3
- } jobjectRefType;</span>
9.錯誤類型定義。
- #define JNI_FALSE 0
- #define JNI_TRUE 1
-
-
- #define JNI_OK 0 /* success */
- #define JNI_ERR (-1) /* unknown error */
- #define JNI_EDETACHED (-2) /* thread detached from the VM */
- #define JNI_EVERSION (-3) /* JNI version error */
- #define JNI_ENOMEM (-4) /* not enough memory */
- #define JNI_EEXIST (-5) /* VM already created */
- #define JNI_EINVAL (-6) /* invalid arguments */
-
-
- #define JNI_COMMIT 1
- #define JNI_ABORT 2
10 .JNI Native Method Interface.(java本地方法接口定義)
- struct JNINativeInterface_;
- struct JNIEnv_;
- #ifdef __cplusplus
- typedef JNIEnv_ JNIEnv;
- #else
- typedef const struct JNINativeInterface_ *JNIEnv;
- #endif
11. JNI Invocation Interface. (java虛擬機接口)
- struct JNIInvokeInterface_;
- struct JavaVM_;
- #ifdef __cplusplus
- typedef JavaVM_ JavaVM;
- #else
- typedef const struct JNIInvokeInterface_ *JavaVM;
- #endif