macOS下使用Temurin JDK 8时CMake无法正确识别JNI
macOS Big Sur下Temurin Java 8的JNI查找问题(CMake)
我在macOS v11(Big Sur)系统上,使用Adoptium的Eclipse Temurin Java 8构建一个库。
安装Java的步骤
执行以下命令安装Temurin 8:
brew tap homebrew/cask-versions brew install --cask temurin8
配置JAVA_HOME
通过以下命令导出JAVA_HOME:
export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)
执行echo $JAVA_HOME验证配置生效,返回结果为:
/Library/Java/JavaVirtualMachines/temurin-8.jdk/Contents/Home
遇到的CMake错误
构建库时,CMake查找JNI失败,报错如下:
CMake Error at /usr/local/Cellar/cmake/3.24.2/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
Could NOT find JNI (missing: JAVA_INCLUDED_PATH JAVA_INCLUDED_PATH2 AWT)
备注信息
- 我通过Homebrew安装CMake,命令为
brew install cmake。 - 已在谷歌和Stack Overflow搜索相关解决方案,现有方案均无效(创建问题时已查看推荐的相似问题)。
- 检查
FindJNI.cmake文件后发现:JAVA_AWT_INCLUDE_DIRECTORIES的值正确,为/Library/Java/JavaVirtualMachines/temurin-8.jdk/Contents/Home/include,且jni.h确实存在于该目录,但find_path(JAVA_INCLUDE_PATH 'jni.h' $(JAVA_AWT_INCLUDE_DIRECTORIES))未能正确设置JAVA_INCLUDE_PATH变量。- 创建测试项目,使用
find_path(TEST 'jni.h' '/Library/Java/JavaVirtualMachines/temurin-8.jdk/Contents/Home/include')可以成功找到文件,TEST变量包含正确路径。
- 我的CMake中
find_package调用语句为:
find_package(JNI 1.7 REQUIRED)
请问在macOS上还需要进行哪些配置才能解决该问题?
内容的提问来源于stack exchange,提问作者Alberto Casas Ortiz
相关产品推荐
相关产品推荐

