首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CMake在MacOS中使用Temuring 8不能正确检测JNI

CMake在MacOS中使用Temuring 8不能正确检测JNI
EN

Stack Overflow用户
提问于 2022-11-02 00:20:05
回答 1查看 40关注 0票数 2

我正在Mac上构建一个库,使用Adoptium (Eclipse )的Java 8。

要安装Java,我使用以下命令:

代码语言:javascript
复制
brew tap homebrew/cask-versions
brew install --cask temurin8

然后,我像这样导出JAVA_HOME:

代码语言:javascript
复制
export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)

并正确地出口它。当我执行echo $JAVA_HOME时,它返回:

代码语言:javascript
复制
/Library/Java/JavaVirtualMachines/temurin-8.jdk/Contents/Home

但是,在构建库时,它试图查找JNI,并返回以下行:

代码语言:javascript
复制
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)

为了在MacOS上工作,还有其他必要的东西吗?

备注:

我使用brew (brew install cmake).

  • I安装的
  • 已经在谷歌和StackOverflow中搜索过了,而建议的解决方案都没有奏效(我在创建这个问题时也检查了推荐的类似问题)。
  • ,我检查了FindJNI.cmake文件中的变量值,一切看起来都是正确的(它应该会找到它)。
    • In FindJNI.cmakeJAVA_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
    • I使用find_path(TEST 'jni.h' '/Library/Java/JavaVirtualMachines/temurin-8.jdk/Contents/Home/include')创建了一个虚拟项目,查找jni.h并运行。value.

包含正确的TEST

谢谢。

编辑:

  • 这是对find_package的调用:

find_package(JNI 1.7必需)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-02 19:33:57

通过将请求的变量设置为cmake的标志,我终于能够解决这个问题。我刚在我的cmake电话中附加了以下内容:

代码语言:javascript
复制
cmake ... -DJAVA_HOME=$(/usr/libexec/java_home -v 1.8) -DJAVA_INCLUDE_PATH=$(/usr/libexec/java_home -v 1.8)/include -DJAVA_INCLUDE_PATH2=$(/usr/libexec/java_home -v 1.8)/include/darwin -DJAVA_AWT_INCLUDE_PATH=$(/usr/libexec/java_home -v 1.8)/include
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74283117

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档