javah - C 头文件和 stub 文件生成器
javah 从 Java 类生成 C 头文件和 C 源文件。这些文件提供了连接胶合,使 Java 和 C 代码可进行交互。
结构
javah [ options ] fully-qualified-classname. . .
javah_g [ options ] fully-qualified-classname. . .
说明
javah 生成实现本地方法所需的 C 头文件和源文件。C 程序用生成的头文件和源文件在本地源代码中引用某一对象的实例变量。.h 文件含有一个 struct 定义,该定义的布局与相应类的布局平行。该 struct 中的域对应于类中的实例变量。
头文件名以及在头文件中所声明的结构名都来源于类名。如果传给 javah 的类是在某个包中,则头文件名和结构名前都要冠以该包名。下划线 (_) 用作名称分隔符。
缺省情况下,javah 为每个在命令行中列出的类都创建一个头文件,且将该文件放在当前目录中。用 -stubs 选项创建源文件。用 -o 选项将所有列出类的结果串接成一个单一文件。
新的平台相关方法接口(Java 平台相关代码接口 (JNI))不需要头文件信息或 stub 文件。javah 仍可用于生成 JNI 风格的本地方法所需的本地方法函数原型。javah 在缺省情况下生成 JNI 风格的输出并将结果放在 .h 文件中。
javah_g 是 javah 的非优化版本,适合于与 jdb 之类的调试程序一起使用。
选项
-o 输出文件
将命令行中列出的所有类的头文件或源文件串接到输出文件中。-o 或 -d 两个选项只能选择一个。
-d 目录
设置 javah 保存头文件或 stub 文件的目录。-d 或 -o 两个选项只能选择一个。
-stubs
使 javah 从 Java 对象文件生成 C 声明。
-verbose
指明长格式输出,并使 javah 将所生成文件的有关状态的信息输出到标准输出设备中。
-help
输出 javah 用法的帮助信息。
-version
输出 javah 的版本信息。
-jni
使 javah 创建一输出文件,该文件包含 JNI 风格的本地方法函数原型。这是缺省输出,所以 -jni 的使用是可选的。
-classpath 路径
指定 javah 用来查询类的路径。如果设置了该选项,它将覆盖缺省值或 CLASSPATH 环境变量。目录用分号分隔。因此,路径的一般格式是:
.;<您的路径>
例如:
.;C:\users\dac\classes;C:\tools\java\classes
-bootclasspath 路径
指定加载自举类所用的路径。缺省情况下,自举类是实现核心 Java 平台的类,位于 jre\lib\rt.jar 和 jre\lib\i18n.jar 中。
-old
指定应当生成旧 JDK1.0 风格的头文件。
-force
指定始终写输出文件。
环境变量
CLASSPATH
用于为系统提供用户定义类的路径。目录用分号分隔,例如:
.;C:\users\dac\classes;C:\tools\java\classes
分享到:
相关推荐
这样,我们就能在Java应用中使用C++实现的TCP客户端功能,同时利用JNI实现Java与C++之间的数据交换。 在"testSocketJni001"这个项目中,可能包含了Android工程的源码、C++源码、Makefile或者其他构建脚本,用于编译...
1. JNI接口定义:JNI提供了丰富的函数接口,如NewGlobalRef、FindClass、GetMethodID等,用于在Java和本地代码之间建立桥梁。 2. 本地方法:Java类可以声明本地方法,这些方法的实现是在C/C++中完成的,通过JNI接口...
总之,JNI实例“Java调用DLL c++调用Java”是一个实用的学习资源,它详细解释了如何利用JNI进行Java与C++的交互,无论是将本地库引入Java程序还是将Java功能嵌入C++应用。通过实践这些例子,开发者能够深入理解JNI的...
在Android中,这通常意味着在Java层和C/C++层之间建立桥梁,使得开发者可以利用C/C++的性能优势处理图形计算、游戏引擎、加密算法等复杂任务。 Android NDK是Google提供的一个工具集,用于在Android应用中编译和...
这篇文档旨在建立Java与C之间的桥梁,帮助开发者理解如何在C语言环境中运行Java编写的程序。 首先,我们要介绍的是Java Native Interface(JNI),这是Java平台标准版(Java SE)的一部分,用于允许Java代码和其他...
总结来说,"简单的android利用jni的小代码"项目是一个学习和实践JNI的起点,通过这个例子,开发者可以了解如何在Android应用中使用C/C++代码,以及如何在Java和本地代码之间建立桥梁。对于深入学习Android开发和优化...
总结来说,`jni.h`和`jni_md.h`是JNI的核心组成部分,它们使得Java代码能够与C/C++等本地代码无缝交互。开发者通过理解和应用这两个头文件提供的接口,可以实现Java和本地代码的高效集成,满足各种复杂需求。在实际...
总结来说,"android-JNI开发"是一个涉及Java和C/C++混合编程的主题,通过JNI可以充分利用C/C++的高效性,同时利用Java的平台无关性和丰富的库资源。提供的两个文件很可能是用于演示如何创建和使用JNI的简单Android...
JNI是Android平台中用于在Java代码和本地C/C++代码之间建立桥梁的技术,它允许开发者利用C/C++的强大性能来处理一些Java无法高效实现的计算任务或者调用已有的库。 在Android Studio中使用JNI,首先需要配置项目的...
“jni”是Java Native Interface的缩写,它是Java平台标准的一部分,定义了如何在Java和本地代码之间建立桥梁。 至于“jvm”,Java虚拟机是Java程序运行的环境,负责解析和执行字节码。在JNI中,我们需要找到JVM...
JNI,全称Java Native Interface,是...通过阅读这些书籍,可以系统地理解JNI的工作原理,学习如何在Java和本地代码之间建立桥梁,从而在各种复杂场景下灵活地融合Java和C/C++的优点,实现高性能、跨平台的应用程序。
标题"JNI编程指南"明确指出本文档旨在指导开发人员如何利用JNI(Java Native Interface)在Java与C/C++之间建立通信,实现代码的复用和跨语言协作。描述强调了JNI作为Java与C/C++通信接口的核心角色,特别提到了它在...
总的来说,JNI是Java世界与本地代码世界的桥梁,它为开发者提供了丰富的工具,使得Java应用能够充分利用本地资源,提升性能,或者利用已有的C/C++库。尽管学习JNI可能有一定难度,但掌握了这些基础知识,你就能自如...
总结来说,这个"android jni demo--helloworld"是Android开发者学习JNI入门的典型示例,通过它,我们可以了解如何在Java和C/C++之间建立桥梁,以及如何在Android项目中有效地利用JNI功能。对于深入的Android开发,...
通过加载.so库并定义相应的入口函数,开发者可以轻松地在Java和C/C++之间建立桥梁,实现高性能和高效率的应用开发。理解并熟练掌握JNI技术对于任何希望开发出高质量Android应用程序的开发者来说都是非常重要的。
JNI在跨平台的系统集成、性能优化以及利用现有C/C++库时扮演着关键角色。下面将深入探讨JNI的核心概念、使用场景、基本结构以及如何开始进行JNI编程。 一、JNI简介 JNI是Java开发工具包(JDK)的一部分,它提供了一...
JNI接口包括一系列的函数,如`FindClass`, `GetFieldID`, `CallVoidMethod`等,它们用于在Java和本地代码之间建立桥梁。 2. **创建C# DLL**: 在C#环境中,使用Visual Studio或其他开发工具创建一个新的类库项目,...
Android JNI(Java Native Interface)是Android开发中的一个重要概念,它为Java代码与本地代码(C/C++)交互提供了桥梁。JNI在Android应用开发中的角色主要体现在以下几个方面: 1. **性能优化**:对于计算密集型...
JNI不仅可以在Java层和C/C++层之间建立桥梁,还可以进一步与硬件设备及驱动程序进行交互。这主要涉及到以下几个方面: 1. **硬件抽象层 (HAL)**:在Android系统中,硬件抽象层将硬件设备封装成模块化的组件,使得...
学习JNI规范中文版,可以帮助开发者更深入地理解如何有效地在Java和本地代码之间建立桥梁,提升应用程序的性能和功能。无论是为了优化性能、利用底层库还是实现特定的平台特性,熟悉JNI都是Android开发者的必备技能...