我在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