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 文件。
分类:
Android
, BAT 与 SHELL
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现