IDEA开发,Jni中javah使用方式的探索

 

javah个人认为只是一个帮助我们便捷生成.h头文件的工具而已,而不需要去build生成class什么的,只需要.java文件里面的内容而已。而.java文件里面你写的native方法和build之后.class文件里的内容并没有不同,怀着这样的想法,进行了下面的测试。

1.正确的做法

IDEA开发,Jni中javah使用方式的探索

 

目录如下,

1.打开终端,进入java目录(打开终端默认是项目的根目录,.代表当前目录,..代表父目录):cd ./src/main/java

2.完整的命令如下:javah -d ./jni  -jni -classpath . HelloWorld.HelloJNI

下面详细解释这个命令:

1.使用javah:javah命令在你安装的JDK路径下的bin目录里,假如你环境变量配置正确的话, 这一步是没有问题的

2.-jni: 使 javah 创建一输出文件,该文件包含 JNI 风格的本地方法函数原型,这是缺省输出,所以 -jni 的使用是可选的。其中,-jni是javah默认的模式,所以,是可以省略的

3.-classpath: 这里分为两部分,第一部分是指定查找你需要生成.h头文件的.java或.class文件的目录,这一步经测试,在你用相对路径时必须要在包外进行,以上图为例,你不能进入HelloWorld路径下进行avah -d ./jni -jni -classpath . HelloJNI命令,虽然在文件存储上他也是个文件夹,但在这里面他是包pakage,其中多个路径用“;”隔开。第二部分是指定.java或.class文件,多个文件用空格隔开

4.-d:生成.h头文件的目录,若不指定的话则默认为当前使用此javah命令的目录。-d一般放在-classpath前面,因为-classpath会一直监测后面的路径,所以如果-d在-classpath后面的话需要这么用。javah -jni -classpath 路径1;路径2;等待路径路径;-d 保存路径 HelloWorld.HelloJNI等.java .class文件

说完了之后,那么你就能理解,最为直接的命令就是javah -classpath .(这有个点) HelloWorld.HelloJNI就能生成头文件了

2.使用External Tools一键生成

External Tools是Intelli J工具(IDEA和Android Studio都是基于它开发的)里提供的便携式命令工具。

File-》setting-》Tools-》External Tools进入编辑添加命令页面IDEA开发,Jni中javah使用方式的探索

 

show in可以选择它出现的地方,下面来使用它IDEA开发,Jni中javah使用方式的探索

 

可以看见很轻松的帮我们生成了头文件