javah 命令小结

Javah 获取您的 Java 源文件并生成 C 头文件,其中包含您的 Java 代码中所有本机方法的 JNI 存根(stub)。如果您正在生成一个类的 JNI 存根,而且您已经把这个类定义为包的一部分,那么您 必须 指定完全限定的类名。”

现在总结如下:

TestHello.java所在的的目录如下:

E:\rcpworkspace\com.dlut.datasender\test\com\dlut\datasender\communication

TestHello.java

Java代码   收藏代码
  1. package com.dlut.datasender.communication;  
  2.   
  3. public class TestHello {  
  4.   
  5.     static {  
  6.         System.loadLibrary("TestHello");  
  7.     }  
  8.   
  9.     public static native void hello(String msg);  
  10.   
  11.     public static void main(String[] args) {  
  12.         hello("Hello,Kimm!");  
  13.     }  
  14. }  

1.运行cmd命令,cd到TestHello.java所在的目录下面,输入:

Java代码   收藏代码
  1. 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
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值