mac 删Android开发 JDK找不到 javah或者javah unbale locate a Java Runtime

原因

在 macOS 上,javah 工具确实从 JDK 9 开始被标记为废弃,并在 JDK 10 及更高版本中完全被移除。因此,如果你使用的是 JDK 10 或更高版本,你将无法在 JDK 的安装目录中找到 javah 工具。

JNI(Java Native Interface)头文件的场景,你可以使用 javac 命令的 -h 选项来替代 javah。

使用 javac 生成 JNI 头文件的步骤:

编写包含 native 方法的 Java 类:

首先,你需要一个包含 native 方法的 Java 类。
确保你已经正确地声明了 native 方法,并使用 System.loadLibrary() 加载了本地库。

编译 Java 类:

使用 javac 命令编译你的 Java 类,但不包括 -h 选项。这个步骤只是为了确保你的 Java 类没有编译错误。

生成 JNI 头文件:

然后,使用 javac 命令的 -h 选项来指定一个目录,用于生成 JNI 头文件。例如:bash

'''
javac -h /path/to/output/directory YourJavaClass.java
'''

生成Java 类相对应的 JNI 头文件, 将放在 /path/to/output/directory 目录下。

实现本地方法:

使用 C 或 C++ 在你的本地库中实现这些 native 方法。确保你的本地方法签名与 JNI 头文件中定义的签名相匹配。
编译和链接本地库:
使用适合你的开发环境的工具链(如 Xcode、Clang 或 gcc)来编译和链接你的本地库。

在 Java 中加载本地库:

在 Java 代码中,使用 System.loadLibrary() 来加载你的本地库。确保库名与你在本地代码中定义的库名一致(不包括前缀 "lib" 和后缀 ".dylib" 或 ".so")。

请注意,-h 选项生成的头文件可能包含一些额外的宏和类型定义,这些在手动编写 JNI 代码时可能不需要。但是,使用自动生成的头文件可以确保你的 JNI 签名与 Java 方法签名完全匹配,从而减少错误的可能性。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容