1.jni.h头文件路径:

  /usr/lib/jvm/jdk_1.6.0_43/include/jni.h

2.jni.h头文件组成分析图:

3.下面通过上图进行分析讲解jni.h头文件.

  一. jni规范中定义的基本数据类型.

  1. #define JNIEXPORT
  2. #define JNIIMPORT
  3. #define JNICALL
  4. typedef int              jint;
  5. #ifdef _LP64 /* 64-bit Solaris */
  6. typedef long             jlong;
  7. #else
  8. typedef long long        jlong;
  9. #endif
  10. typedef signed char    jbyte;
  11. typedef unsigned char    jboolean;
  12. typedef unsigned short   jchar;
  13. typedef short       jshort;
  14. typedef float           jfloat;
  15. typedef double          jdouble;
  16. typedef jint             jsize;</span>

4.jni标准定义的数组类型。

  1. struct _jobject;
  2. typedef struct _jobject *jobject;
  3. typedef jobject jclass;
  4. typedef jobject jthrowable;
  5. typedef jobject jstring;
  6. typedef jobject jarray;
  7. typedef jarray jbooleanArray;
  8. typedef jarray jbyteArray;
  9. typedef jarray jcharArray;
  10. typedef jarray jshortArray;
  11. typedef jarray jintArray;
  12. typedef jarray jlongArray;
  13. typedef jarray jfloatArray;
  14. typedef jarray jdoubleArray;
  15. typedef jarray jobjectArray;

5.方法签名时用到的公共体类型。

  1. typedef union jvalue {
  2. jboolean z;
  3. jbyte    b;
  4. jchar    c;
  5. jshort   s;
  6. jint     i;
  7. jlong    j;
  8. jfloat   f;
  9. jdouble  d;
  10. jobject  l;
  11. } jvalue;</span>

6.属性Id的定义。

  1. struct _jfieldID;
  2. typedef struct _jfieldID *jfieldID;   //字段ID类型的

7.方法Id的定义。

  1. struct _jmethodID;
  2. typedef struct _jmethodID *jmethodID; //方法ID类型的定义。

8.几种不同类型引用的定义。

  1. Return values from jobjectRefType
  2. typedef enum _jobjectType {
  3. JNIInvalidRefType    = 0,
  4. JNILocalRefType      = 1,
  5. JNIGlobalRefType     = 2,
  6. JNIWeakGlobalRefType = 3
  7. } jobjectRefType;</span>

9.错误类型定义。

  1. /*
  2. * jboolean constants
  3. */
  4. #define JNI_FALSE 0
  5. #define JNI_TRUE 1
  6. /*
  7. * possible return values for JNI functions.
  8. */
  9. #define JNI_OK           0                 /* success */
  10. #define JNI_ERR          (-1)              /* unknown error */
  11. #define JNI_EDETACHED    (-2)              /* thread detached from the VM */
  12. #define JNI_EVERSION     (-3)              /* JNI version error */
  13. #define JNI_ENOMEM       (-4)              /* not enough memory */
  14. #define JNI_EEXIST       (-5)              /* VM already created */
  15. #define JNI_EINVAL       (-6)              /* invalid arguments */
  16. /*
  17. * used in ReleaseScalarArrayElements
  18. */
  19. #define JNI_COMMIT 1
  20. #define JNI_ABORT 2

10 .JNI Native Method Interface.(java本地方法接口定义)

  1. struct JNINativeInterface_;
  2. struct JNIEnv_;
  3. #ifdef __cplusplus   
  4. typedef JNIEnv_ JNIEnv;
  5. #else
  6. typedef const struct JNINativeInterface_ *JNIEnv;       //我们使用的是这个定义.
  7. #endif

11. JNI Invocation Interface. (java虚拟机接口)

    1. struct JNIInvokeInterface_;
    2. struct JavaVM_;
    3. #ifdef __cplusplus
    4. typedef JavaVM_ JavaVM;
    5. #else
    6. typedef const struct JNIInvokeInterface_ *JavaVM;
    7. #endif

jni.h头文件详解一的更多相关文章

  1. jni.h头文件详解二

    作者:左少华 博客:http://blog.csdn.net/shaohuazuo/article/details/42932813 转载请注明出处:http://blog.csdn.net/shao ...

  2. 【转】 jni.h头文件详解(二)

    原文网址:http://blog.csdn.net/shaohuazuo/article/details/42932813 作者:左少华 博客:http://blog.csdn.net/shaohua ...

  3. Linux 头文件详解

    概览: 头文件目录中总共有32个.h头文件.其中主目录下有13个,asm子目录中有4个,Linux子目录中有10个,sys子目录中有5个. <a.out.h>:a.out头文件,定义了a. ...

  4. javascript —— HTTP头文件详解

    HTTP(超文本传输协议:HyperText Transfer Protocol)是浏览器和服务器通过internet进行相互通信的协议,也是网络上应用最为广泛的一种网络协议.HTTP规范由World ...

  5. http请求头、响应头文件详解

    HTTP Request Header 请求头   解释 示例 Accept 指定客户端能够接收的内容类型 Accept: text/plain, text/html Accept-Charset 浏 ...

  6. Android JNI开发生成.h头文件问题(转)

    在JNI开发中,首先要将建立的anroid类编译成.h文件,编译用到命令javah,由于第一次用,以前对java的编译过程也不怎么了解,所以走了好多弯路,网络没有对这一步的详细介绍,这里讲一下: 通过 ...

  7. Android JNI开发生成.h头文件问题

    在JNI开发中,首先要将建立的anroid类编译成.h文件,编译用到命令javah,由于第一次用,以前对java的编译过程也不怎么了解,所以走了好多弯路,网络没有对这一步的详细介绍,这里讲一下: 通过 ...

  8. PE文件详解(六)

    这篇文章转载自小甲鱼的PE文件详解系列原文传送门 之前简单提了一下节表和数据目录表,那么他们有什么区别? 其实这些东西都是人为规定的,一个数据在文件中或者在内存中的位置基本是固定的,通过数据目录表进行 ...

  9. stdarg.h头文件源代码分析

    谈到C语言中可变参数函数的实现(参见C语言中可变参数函数实现原理),有一个头文件不得不谈,那就是stdarg.h 本文从minix源码中的stdarg.h头文件入手进行分析: #ifndef _STD ...

随机推荐

  1. MathType支持64位 WIN 7Office 2013(完美解决)(转载)

    经过几次尝试解决了,方法如下: 1. 安装MathType 6.8 (别的版本不知是否适用,本人安装的是该版本) 2. 将以下两个文件拷贝出来 C:\Program Files (x86)\MathT ...

  2. xCode如何导入自定义的snippets文件

    xCode代码块snippets导入 目标文件放置位置 ~/Library/Developer/Xcode/UserData/CodeSnippets 操作方法: 解压缩并复制到以下目录即可

  3. C#微信开发之旅--自定义菜单

    上一篇说道基本信息的回复<C#微信开发之旅--基本信息的回复>,当中就说到文本信息的回复,其他信息的回复,可以参考下开发文档中回复信息的格式进行修改就可以. 下面来实现下自定义菜单.据我了 ...

  4. Spring Mvc 笔记二之异常和文件上传

    spring mvc的异常与文件上传 1.异常: spring注解版的异常有局部异常和全局异常                1.局部异常对单个controller有效;(在controller类写一 ...

  5. Codevs 1066 引水入城 2010年NOIP全国联赛提高组

    1066 引水入城 2010年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 传送门 题目描述 Description 在一个遥远的国度 ...

  6. 使用Idea编写javaweb以及maven的综合(一)

    今天总结的第一点是在windows下使用idea编写jsp并且使用tomcat部署:第二点是新建maven项目,之前一直是听说也没有自己实践过,今天就大概说一下. 0x01 IDEA 全称 Intel ...

  7. 【ADO.NET】8、DataSet的使用

    一.DataSet的查询 SqlDataReader 适用于大型数据的读取,它是一条一条的读取,读取出来的数据是存放在服务器上当正在读取数据的时候,突然与服务中断,将无法读取后面的数据DataSet ...

  8. IOS分类(Category)

    分类(Category):拓展原有类的方法,而不影响原有类的子类,分类中不能创建成员变量. 分类的使用: 1.创建分类: 如图点击(File)选择(New)->(File).. 或者使用快捷键c ...

  9. xp 下卸载 硬盘安装的 ubuntu (本人的悲伤史)

    正常启动XP系统,到http://www.sysint.no 下载 MBRFIX.zip,解压,把文件放在C盘, 点击“开始”==“运行”==“cmd”,出现下面图 输入cd\,如下图, 再按回车键, ...

  10. 『奇葩问题集锦』npm install 报错 node-pre-gyp ERR! node-pre-gyp -v v0.6.25

    gyp ERR! configure error gyp ERR! stack Error: Can't find Python executable "python", you ...