我正在Mac上构建一个库,使用Adoptium (Eclipse )的Java 8。
要安装Java,我使用以下命令:
brew tap homebrew/cask-versions
brew install --cask temurin8然后,我像这样导出JAVA_HOME:
export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)并正确地出口它。当我执行echo $JAVA_HOME时,它返回:
/Library/Java/JavaVirtualMachines/temurin-8.jdk/Contents/Home但是,在构建库时,它试图查找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)为了在MacOS上工作,还有其他必要的东西吗?
备注:
我使用brew (brew install cmake).
FindJNI.cmake文件中的变量值,一切看起来都是正确的(它应该会找到它)。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')创建了一个虚拟项目,查找jni.h并运行。value.包含正确的TEST
谢谢。
编辑:
find_package的调用:find_package(JNI 1.7必需)
发布于 2022-11-02 19:33:57
通过将请求的变量设置为cmake的标志,我终于能够解决这个问题。我刚在我的cmake电话中附加了以下内容:
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)/includehttps://stackoverflow.com/questions/74283117
复制相似问题