cmake find_package(JNI)在Ubuntu 12.04 amd64中不工作 [英] cmake find_package(JNI) not work in Ubuntu 12.04 amd64

查看:2196
本文介绍了cmake find_package(JNI)在Ubuntu 12.04 amd64中不工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在Ubuntu 12.04 amd64上使用cmake 2.8.7。在我的系统中安装的OpenJDK JRE组件如下:

  $ sudo dpkg  - grep jdk 
openjdk-6-jre 6b27-1.12.5-0ubuntu0.12.04.1 OpenJDK Java运行时,使用Hotspot JIT
openjdk-6-jre-headless 6b27-1.12.5-0ubuntu0.12.04。 1 OpenJDK Java运行时,使用Hotspot JIT(无头)
openjdk-6-jre-lib 6b27-1.12.5-0ubuntu0.12.04.1 OpenJDK Java运行时(架构无关库)

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



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

 无法找到JNI(缺少: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组件。 / p>

我想知道在FindJNI.cmake文件中有什么错误以及我在Oracle Java 7 JDK设置中错过了什么,所以cmakefind_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


I am using cmake 2.8.7 on Ubuntu 12.04 amd64. The installed OpenJDK JRE components in my system are listed below :

$ 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)

However, I am not using the OpenJDK JRE components. I have manually installed Oracle Java 7 JDK in "/usr/lib/jvm/jdk1.7.0_25" and have used "update-alternatives" to point "java" to my installed Oracle Java 7 JDK. I have not set any "JAVA_HOME", "JAVA_BIN", "CLASSPATH" environment variables and the manually installed Oracle Java 7 JDK seems work OK in Eclipse 4.3.

The problem is that when I use "find_package(JNI)" in cmake and use the "message()" function to show the JNI variables, I have the following result :

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

The "find_package(JNI)" seems could find some of the Java components related to the OpenJDK JRE and could not find my current Oracle Java 7 JDK components pointed by "update-alternatives".

I want to know that is there any bug in the "FindJNI.cmake" file and what I have missed in the Oracle Java 7 JDK setup so that cmake "find_package(JNI)" could work properly.

Thanks for any suggestion.

解决方案

You can manually modify FindJNI.cmake to help it find your installed JDK. See this gist:

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

It's a shame this script hasn't been updated, but maybe not a surprise, given that CMake is such a disaster.

EDIT: A more straightforward solution is to set JAVA_HOME properly. With OpenJDK 7 installed, I set it with:

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

这篇关于cmake find_package(JNI)在Ubuntu 12.04 amd64中不工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆