JNI javah 找不到 'xxxx' 的类文件。

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 文件。

posted @ 2022-05-16 20:58  lesten  阅读(731)  评论(0)    收藏  举报