javah 命令小结
2012-07-09 18:02
162 查看
Javah获取您的 Java 源文件并生成 C 头文件,其中包含您的 Java 代码中所有本机方法的 JNI 存根(stub)。如果您正在生成一个类的 JNI 存根,而且您已经把这个类定义为包的一部分,那么您 必须 指定完全限定的类名。”
现在总结如下:
TestHello.java所在的的目录如下:
E:\rcpworkspace\com.dlut.datasender\test\com\dlut\datasender\communication
TestHello.java
Java代码
package com.dlut.datasender.communication;
public class TestHello {
static {
System.loadLibrary("TestHello");
}
public static native void hello(String msg);
public static void main(String[] args) {
hello("Hello,Kimm!");
}
}
1.运行cmd命令,cd到TestHello.java所在的目录下面,输入:
Java代码
javac TestHello.java
没有出错的话会在当前目录(E:\rcpworkspace\com.dlut.datasender\test\com\dlut\datasender\communication)下面生成TestHello.class文件。
2.cd到E:\rcpworkspace\com.dlut.datasender\test\(source folder根目录)
输入: set classpath=E:\rcpworkspace\com.dlut.datasender\test 回车
3.再输入:javah -jni com.dlut.datasender.communication.TestHello 回车
这时候在E:\rcpworkspace\com.dlut.datasender\test下面会生成一名为com_dlut_datasender_communication_TestHello.h的文件
4.重命名com_dlut_datasender_communication_TestHello.h为TestHello.h即可
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+linux救火必备命令小结
- javah 命令小结
- javah 命令小结
- javah 命令小结
- JVM jinfo命令(Java Configuration Info) 用法小结
- Java设计模式--命令模式
- Linux:常用性能检查命令(内存、CPU 、网络、磁盘、Java应用)
- java实现插入选择冒泡归并排序小结
- java基础面试知识点小结
- Hessian和Java反序列化问题小结
- Java利用ImageMagick调用linux系统命令实现Ai或者PSD文件转化为jpg或者png文件
- java 调用 bat 如果里面用了第三方命令 dos 窗口没有关闭 解决方法
- java学习笔记 4种内部类小结
- java获得采集网页内容的方法小结
- java设计模式15_命令模式
- 传递带空格的参数给linux shell中的java命令
- javah javac 不是内部或外部命令 解决方法
- CMD 下使用java命令提示:找不到或无法加载主类
- Java命令行程序阻断操作系统Ctrl+C/kill命令等信号
- Java 关键字final的一小结