You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 04:30:47