cmake find_package(JNI)在Ubuntu 12.04 amd64中不起作用

我在Ubuntu 12.04 amd64上使用了cmake 2.8.7.我系统中安装的OpenJDK JRE组件如下所示:
$sudo dpkg --list | grep jdk
openjdk-6-jre   6b27-1.12.5-0ubuntu0.12.04.1   OpenJDK Java runtime,using Hotspot JIT
openjdk-6-jre-headless   6b27-1.12.5-0ubuntu0.12.04.1   OpenJDK Java runtime,using Hotspot JIT (headless)
openjdk-6-jre-lib   6b27-1.12.5-0ubuntu0.12.04.1   OpenJDK Java runtime (architecture independent libraries)

但是,我没有使用OpenJDK JRE组件.我已经手动安装了Oracle Java 7 JDK
在“/usr/lib/jvm/jdk1.7.0_25”中,并使用“更新选项”将“java”指向我安装的Oracle Java 7 JDK.我没有设置任何“JAVA_HOME”,“JAVA_BIN”,“CLAsspATH”环境变量和手动安装的Oracle Java 7 JDK在Eclipse 4.3中似乎工作正常.

问题是当我在cmake中使用“find_package(JNI)”,并使用“message()”函数显示JNI变量时,我有以下结果:

Could NOT find JNI (missing:  JAVA_INCLUDE_PATH JAVA_INCLUDE_PATH2 JAVA_AWT_INCLUDE_PATH) 
JNI_FOUND = FALSE
JNI_LIBRARIES = /usr/lib/jvm/java-6-openjdk/jre/lib/amd64/libjawt.so;/usr/lib/jvm/java-6-openjdk/jre/lib/amd64/server/libjvm.so
JAVA_INCLUDE_PATH = JAVA_INCLUDE_PATH-NOTFOUND
JAVA_INCLUDE_PATH2 = JAVA_INCLUDE_PATH2-NOTFOUND
JAVA_AWT_INCLUDE_PATH = JAVA_AWT_INCLUDE_PATH-NOTFOUND
JAVA_JVM_LIBRARY = /usr/lib/jvm/java-6-openjdk/jre/lib/amd64/server/libjvm.so
JAVA_AWT_LIBRARY = /usr/lib/jvm/java-6-openjdk/jre/lib/amd64/libjawt.so
JNI_INCLUDE_Dirs = JAVA_INCLUDE_PATH-NOTFOUND;JAVA_INCLUDE_PATH2-NOTFOUND;JAVA_AWT_INCLUDE_PATH-NOTFOUND

“find_package(JNI)”似乎可以找到与OpenJDK JRE相关的一些Java组件,并且找不到“update-alternatives”指出的当前Oracle Java 7 JDK组件.

我想知道“FindJNI.cmake”文件中有任何错误,以及我在Oracle Java 7 JDK设置中遗漏了哪些错误,以便cmake“find_package(JNI)”可以正常工作.

感谢任何建议.

您可以手动修改FindJNI.cmake来帮助找到您安装的JDK.
看到这个要点:

https://gist.github.com/emchristiansen/6845954

这是一个耻辱,这个脚本没有更新,但也许不是一个惊喜,因为CMake是这样的灾难.

编辑:一个更直接的解决方案是正确设置JAVA_HOME.
安装了OpenJDK 7,我设置它:

export JAVA_HOME = /usr/lib / jvm / java-7-openjdk-amd64

相关文章

目录前言一、创建Hadoop用户二、更新apt和安装Vim编辑器三、...
原文连接:https://www.cnblogs.com/yasmi/p/5192694.html ...
电脑重启后,打开VirtualBox,发现一直用的虚拟机莫名的消失...
参见:https://blog.csdn.net/weixin_38883338/article/deta...
Ubuntu 18.04 LTS 已切换到 Netplan 来配置网络接口。Netpla...
介绍每个 Web 服务都可以通过特定的 URL 在 Internet 上访问...