【JNI】javah命令详解

一,javah 用法

javah命令主要用于在JNI开发的时,把java代码声明的JNI方法转化成C\C++头文件,以便进行JNI的C\C++端程序的开发。

【注意】javah命令对Android编译生成的类文件并不能正常工作(??求验证??)如果对于Android的JNI要想生成C\C++头文件的话,可能只有先写个纯的java代码来进行JNI定义,接着用JDK编译,然后再用javah命令生成JNI的C\C++头文件。当然你也可以不用javah命令,直接手写JNI的C\C++头文件。

标准选项
-classpath <path> Path from which to load classes
-bootclasspath <path> Path from which to load bootstrap classes
-d <dir> Output directory
-o <file> Output file (only one of -d or -o may be used)
-jni Generate JNI-style header file (default)
-version Print version information
-verbose Enable verbose output
-force Always write output files
二,javac用法
javac 工具读取用 Java 编程语言编写的类和接口定义,并将它们编译成字节码类文件。

标准选项

  -classpath 类路径
  设置用户类的路径,它会覆盖 CLASSPATH 环境变量中的用户类路径。若既未指定 CLASSPATH 又未指定 -classpath,则用户类路径由当前目录构成
  -d 目录
  设置输出类文件的位置。如果某个类是一个包的组成部分,则 javac 将把该类文件放入反映包名的子目录中,必要时创建目录。例如,如果指定 -d c:\myclasses 并且该类名叫 com.mypackage.MyClass,那么类文件就叫作 c:\myclasses\com\mypackage\MyClass.class。
  若未指定 -d 选项,则 javac 将把类文件放到与源文件相同的目录中。
  注意: -d 选项指定的目录不会被自动添加到用户类路径中。
  -encoding
  设置源文件编码名称,例如 EUCJIS/SJIS。若未指定 -encoding 选项,则使用平台缺省的转换器。
  在windows dos环境下编译NetBeans建立的源文件需要加上参数 -encoding utf-8。
  -g
  生成所有的调试信息,包括局部变量。缺省情况下,只生成行号和源文件信息。
  -g:none
  不生成任何调试信息。
  -g:{关键字列表}
  只生成某些类型的调试信息,这些类型由逗号分隔的关键字列表所指定。有效的关键字有:
  source
  源文件调试信息
  lines
  行号调试信息
  vars
  局部变量调试信息
  -nowarn
  禁用警告信息。
  -O
  优化代码,缩短执行时间。使用 -O 选项可能使编译速度下降,生成更大的类文件并使程序难以调试。
  -sourcepath 源路径
  指定用来查找类或接口定义的源代码路径。与用户类路径一样,多个源路径项用分号 “ ; ” 进行分隔,它们可以是目录、JAR 归档文件或 ZIP 归档文件。如果使用包,那么目录或归档文件中的本地路径名必须反映包名。(注意:通过类路径查找的类,如果找到了其源文件,则可能会自动被重新编译。)
  -verbose
  冗长输出。它包括了每个所加载的类和每个所编译的源文件的有关信息。
三,javah和javac
javah和javac命令相似,有两种方法可以指定需要javah命令把JNI方法转化成C\C++头文件的类文件名
一种是直接给出要操作的类文件
如果源文件数量少,可以用这种方式,在命令行上列出文件名即可。文件与文件之间用空格分开就可以了。
另一种是通过@files的形式
可以把要操作的java类文件名列在一个文件,文件名之间用空格或回车进行分割。然后在javah命令行中,
可以用'@' 字符加上包含需要把JNI方法转化成C\C++头文件的类文件名的文件名来指定需要把哪些java类文件的JNI方法转化成C\C++头文件。
因为javah当遇到以 `@' 字符,它就会把该字符后的文件所列出的所有java类文件的JNI方法转化为C\C++头文件。这种形式适用于java类文件很多的情况。
http://hubingforever.blog.163.com/blog/static/17104057920115218559186/














  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值