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
分享到:
相关推荐
`javah`工具就是Java SDK提供的一种命令行工具,用于生成C或C++的头文件,使得我们可以为Java类编写本地方法。然而,在实际操作中,我们可能会遇到一些常见错误。下面我们将详细讨论这些错误及其解决方法。 1. **...
【标题】"javah h h h guu" 提到的 "javah" 是 Java 平台中的一个工具,主要用于生成 C/C++ 头文件,这些头文件包含了调用 Java 类中的 native 方法所需的函数原型。这通常是 Java 开发中进行本地方法接口(JNI,...
在JNI开发中,我们常常需要通过`javah`工具来生成C或C++的头文件,这些头文件定义了Java层与本地层交互的函数原型。`javah`工具可以从已编译的Java类中提取方法签名,生成对应的C/C++函数原型。 在`javah`命令中,...
在Android Studio 3.0及更高版本中,虽然Gradle插件已经内置了对JNI的支持,但使用javah工具编译JNI仍然是一种常见的方法,尤其是对于熟悉旧版流程的开发者。 首先,让我们理解一下javah工具。javah是Java SDK中的...
Javah是Java SDK中的一个工具,用于生成C/C++的头文件,这些头文件包含了Java类的方法声明,使得在C/C++代码中可以调用Java方法。Eclipse作为一款流行的Java集成开发环境,提供了配置NDK编译的功能,便于进行混合...
JavaH指数,也称为H指数,是衡量科研人员学术影响力的一种指标。这个概念是由物理学家乔治·赫希在2005年提出的,用于评估科学家的科研成果质量和影响力。H指数考虑了研究者发表的论文数量和这些论文的被引用次数,...
本文总结了 JDK 中的各种命令,包括 javac、java、javah、jdb 等,详细介绍了 JDB 调试工具的使用方法和命令列表。通过学习这些命令,可以更好地学习和使用 Java 语言。 一、JDK 命令简介 JDK 中提供了许多实用的...
JavaH5微信支付是将Java技术与微信支付接口结合,为用户提供在网页上进行支付的服务。这个技术主要用于电商网站、移动应用等场景,方便用户在H5环境下完成交易。接入H5微信支付需要理解以下几个核心知识点: 1. **...
在本项目中,"javaweb+javah后端代码+芝麻开门博客网站后端代码" 提供了一套完整的Java Web后端解决方案,适合用于毕业设计或构建博客网站的后台系统。下面将详细阐述其中涉及的技术栈、核心知识点以及它们在实际...
javah命令生成的后缀是.h的c语言的头文件,
2. **生成头文件**:使用JDK的`javah`工具,根据包含`native`方法的类生成对应的C/C++头文件。例如,对于上述的`HelloWorld`类,可以执行: ``` javah HelloWorld ``` 这将生成`HelloWorld.h`文件,里面包含了Java...
4. 利用命令生成相应的头文件,在根目录下执行:javah -classpath bin/classes -d jni com.xxx.hello.HelloJni ————————————— ——————— ^ ^ 包名 类名 5. 编写相应的.c文件(hello-jni.c) #...
虽然标题中提到了“javah5”,但没有明确说明Java在项目中的具体角色。通常情况下,Java Web开发可以用于构建服务器端的后端系统,处理用户请求,管理数据库,与前端进行交互。如果Java在这里用于实现H5棋牌的后端...
javah是用于生成Java本地接口(JNI)头文件的一个工具,它可以帮助开发者将Java类声明转换成C/C++的头文件,而javap是Java的反汇编工具,可以用来输出Java类的可读形式。描述强调,如果无法获取到签名,就无法根据...
论文中提出了JavaH i系统的设计和实现,JavaH i是一个基于Java虚拟机的跨平台即时通讯工具,具有跨平台、安全性、多线程和网络Socket编程的优点。 以下是该论文中的主要知识点: 1. 即时通讯的定义和分类:即时...
Android NDK 提供了一個工具 javah,可以将 Java 代码中的 JNI 方法转换为 C/C++ 头文件,以便进行 JNI 的 C/C++ 端程序的开发。 javah 命令是 Android NDK 中的一个重要工具,主要用于将 Java 代码中的 JNI 方法...
- `javah` 工具是Java SDK的一部分,用于从已编译的Java类(如 `.class` 文件)生成C或C++的头文件。在这个例子中,`com_sundy_jnidemo_ChangeMethodFromJni.h` 和 `com_wwj_jni_TestJNI.h` 应该是由 `javah` 生成...
"HelloNDK学习"项目是一个面向初学者的实践教程,旨在帮助开发者掌握NDK的基础使用以及相关技术,如javah、ant和多平台支持。 1. NDK基础: NDK提供了一组工具,让开发者能够在Android应用中嵌入本地代码。这样...
在Android Studio的Terminal中,编译项目以生成`.class`文件,然后导航到`app/build/intermediates/classes/debug`目录,执行`javah -jni 包名.JniTest`命令。这会生成一个与Java类相对应的头文件,例如`...