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. java内存分块

     运行时数据区域 Java虚拟机在执行Java的过程中会把管理的内存划分为若干个不同的数据区域.这些区域有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,而有的区域则依赖线程的启 ...

  2. 关于ligerui 中 grid 表格的扩展搜索功能在远程数据加载时无法使用的解决办法

    要想使用grid里的扩展搜索功能,除了要引用ligerui主要的js文件外,还必须引入下面的JS文件: 1.Source\demos\filter\ligerGrid.showFilter.js 2. ...

  3. Candence下对“跨页连接器(off-page connector)”进行批量重命名的方法

    parts.ports.alias等等均可以在“属性编辑器(Property Editor)”中进行查看编辑,并通过复制到Excel等表格软件来进行批量修改.之后再粘贴回去的方法进行批量编辑.但是“跨 ...

  4. Java—static、this、super用法总结

        通过用static来定义方法或成员,为我们编程提供了某种便利,从某种程度上可以说它类似于C语言中的全局函数和全局变量.(理解为加了static的就是全局变量)但是,并不是说有了这种便利,你便可 ...

  5. JS自动合并表格

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. OC加强-day05

    #program mark - 0_11 NSRange结构体介绍 [掌握] 是Foundation框架中的一个结构体 NSRange 定义的一个变量的两个属性 location:起始下标 lengt ...

  7. iOS开发——短信验证码

    作为iOS开发者,大家都应该知道ShareSDK这个比较出名的第三方分享(带统计功能)开发工具包. 他的官网今年年初发布了短信验证码的SDK.本文介绍它的短信验证码SDK.(部分过程参考官网如何集成的 ...

  8. c# 串口发送接收数据

    /********************** 串口数据接收事件 *****************************/ private void SerialPort_DataReceived ...

  9. 【ADO.NET】6、SQLHelper简单封装

    using System.Data.SqlClient;using System.Configuration;引用:System.Configuration 连接字符串放到配置文件中 新建一个类,写如 ...

  10. NPOI_2.1.3-Excel中设置小数、百分比、货币、日期、科学计数法和金额大写

    在操作Excel时候一些特殊值的转换是在所难免的,下面就给出转换方法大同小异,代码如下: HSSFWorkbook hssfWorkbook = new HSSFWorkbook(); ISheet ...