关闭

【JNI】javah命令详解

标签: jnijavaoutputnetbeanspathc
1922人阅读 评论(0) 收藏 举报
分类:

   一,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/














1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1127637次
    • 积分:15525
    • 等级:
    • 排名:第725名
    • 原创:391篇
    • 转载:31篇
    • 译文:1篇
    • 评论:545条
    博客专栏