假如D盘下有个 t.java 文件 D:/test/t.java
1. 这个类没有导入包 生成 .h 文件很简单
命令行定位到该 java 文件夹下(这里有个小技巧 先打开该文件夹 然后再地址栏输入 cmd 按回车就能直接定位该位置)
javac t.java
javah t
这样就生成 .h 头文件
2. 有包名的情况
比如上面的 t.java 有导入包名 package com.htest
首先 生成 .class 的方式不变 还是 在 t.java 文件所在的目录执行命令
javac t.java 生成 t.class
然后再当前目录开始新建文件夹 包名多少层就建多少个文件夹
比如上面的 package com.htest 就要新建 com 文件夹 然后再 com 文件里面新建 htest 文件夹
最后把生成的 t.class 文件复制到 htest 文件夹下
在包名外的文件夹下执行 javah t 命令(重点)
不能进入包名里面的文件夹下执行 javah 命令。 因为该命令是从定位的文件夹开始寻找包名路径下的 .class 文件
比如我的包名是 com.htest 执行 javah 命令时我必须定位在 com 外的那层文件夹 也就是 test 文件夹 。因为执行命令的时候会开始以当前路径为起点开始寻找 com/htest 文件下是否有 .class 文件找到了就执行命令 如果你定位到 .class 文件所在目录 则执行命令的时候 从 .class 文件开始寻找是找不到的 。