JNI 生成 头文件
同样的命令行
javah -verbose -classpath ..\..\..\..\..\..\..\AndroidSDK\platforms\android-28\android.jar;. -jni com.example.myapplication.MainActivity
注意:
指定 -classpath 的时候 在 Win 上用 分号; 在 Mac OS 使用 : 分隔多个路径
Windows 10 PowerShell 执行
当我用 :替换 ; 的时候 报错变成了找不到类文件
在这里爬了挺久的坑 甚至指定sdk 路径的 盘符 有 :号 我都改成了相对路径 最终发现 在cmd 是可以执行成功的
Windows 10 cmd 执行 是可以正常生成的。
对 PowerShell 与 cmd 的差别还是不知道 掉了这个坑 记录一下
感觉 是因为 PowerShell 对于 Linux 和 Win 风格的兼容 让他 无法 分清 这里面 指定 -classpath 时的 分隔符 在 Win 下的 ; 和 在 Linux 下的 ;导致的 这个问题。
我的 jdk 版本
总而言之:
如果 在 Win10 下的 cmd 中, 如果出现了 javah 找不到 类。那么 对照两个位置
1、 执行 javah 的路径 是否在 app\src\main\java 文件夹 如果不在 那么尝试 cd 进入 java 文件夹 执行。 因为我这里 它找 java 文件 是相对当前文件夹的 。 参数 -classpath 指定的
2、 -classpath 中 多个路径 的分隔符 在 Linux 中是 : 在 Win 下是 ; 一定要对应 否则就会 找不到 java 文件。