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

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

问题描述

我在 Ubuntu 12.04 amd64 上使用 cmake 2.8.7.下面列出了我系统中安装的 OpenJDK JRE 组件:

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)

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

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.

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

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

find_package(JNI)"似乎可以找到一些与 OpenJDK JRE 相关的 Java 组件,但找不到我当前由update-alternatives"指向的 Oracle Java 7 JDK 组件.

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".

我想知道FindJNI.cmake"文件中是否有任何错误以及我在 Oracle Java 7 JDK 设置中遗漏了什么,以便 cmakefind_package(JNI)"可以正常工作.

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.

感谢您的任何建议.

推荐答案

您可以手动修改 FindJNI.cmake 以帮助它找到您安装的 JDK.请参阅此要点:

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

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

很遗憾这个脚本没有更新,但也许并不奇怪,因为 CMake 是一场灾难.

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

更直接的解决方案是正确设置 JAVA_HOME.安装 OpenJDK 7 后,我将其设置为:

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

导出JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64

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

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