cmake find_package (JNI) ne fonctionne pas sous Ubuntu 12.04 amd64
Je suis en utilisant cmake 2.8.7 sur Ubuntu 12.04 amd64. Le installé OpenJDK JRE composants dans mon système sont énumérés ci-dessous :
$ 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)
Cependant, je ne suis pas à l'aide de l'OpenJDK JRE composants. J'ai installé manuellement Oracle Java JDK 7
dans "/usr/lib/jvm/jdk1.7.0_25", et ont utilisé "update-alternatives" à point "java" à ma installé Oracle Java JDK 7. Je n'ai pas mis tout "JAVA_HOME", "JAVA_BIN", "CLASSPATH" variables d'environnement et le manuellement installé Oracle Java JDK 7 semble OK dans Eclipse 4.3.
Le problème est que lorsque j'utilise "find_package(JNI)" cmake et d'utiliser le "message()" fonction pour afficher la JNI variables, j'ai le résultat suivant :
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
La "find_package(JNI)", il semble possible de trouver certains des composants Java liées à l'OpenJDK JRE et ne pouvait pas trouver mon Oracle Java JDK 7 composants pointé par "update-alternatives".
Je veux savoir qu'est-il un bug dans la FindJNI.cmake" fichier et ce que j'ai raté dans l'Oracle Java JDK 7 de l'installation afin de cmake "find_package(JNI)" pourrait fonctionner correctement.
Merci pour toute suggestion.
source d'informationauteur user1129812
Vous devez vous connecter pour publier un commentaire.
Vous pouvez modifier manuellement FindJNI.cmake pour l'aider à trouver votre JDK installé.
Voir ce gist:
https://gist.github.com/emchristiansen/6845954
C'est une honte que ce script n'a pas été mis à jour, mais peut-être pas une surprise, étant donné que CMake est une telle catastrophe.
EDIT: de plus simple solution consiste à définir
JAVA_HOME
correctement.Avec OpenJDK 7 est installé, je l'ai mis avec:
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
Si vous avez oracle jdk 7 installé sur votre système, comme ce fut mon cas, vous pourriez avoir des problèmes lors de la construction de opencv. Pour résoudre ces questions, j'ai eu à modifier, /usr/share/cmake-2.8/Modules/FindJNI.cmake fichier. Dans ce fichier, j'ai commenté les lignes avec des références à openjdk et par défaut et ajouté les références de l'oracle jdk 7, comme illustré ci-dessous.
et dans la section où le script recherche pour inclure la bibliothèque...
Puis j'ai suivi les instructions précises pour construire le openCV pour android.
J'ai eu à commenter openjdk et par défaut liées lignes, parce qu'ils étaient en conflit avec les installations oracle.