2013-07-14 8 views
9

में काम नहीं करता है मैं उबंटू 12.04 amd64 पर cmake 2.8.7 का उपयोग कर रहा हूं। अपने सिस्टम में स्थापित OpenJDK JRE घटकों नीचे सूचीबद्ध हैं:सेमीक find_package (जेएनआई) उबंटू 12.04 amd64

$ 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 घटकों का उपयोग नहीं कर रहा हूँ। मैंने मैन्युअल रूप से ओरेकल जावा 7 जेडीके "/usr/lib/jvm/jdk1.7.0_25" में मैन्युअल रूप से स्थापित किया है और मेरे स्थापित ओरेकल जावा 7 जेडीके पर "जावा" को इंगित करने के लिए "अपडेट-विकल्प" का उपयोग किया है। मैंने कोई भी "JAVA_HOME", "JAVA_BIN", "क्लासस्पैट" पर्यावरण चर सेट नहीं किया है और मैन्युअल रूप से स्थापित ओरेकल जावा 7 जेडीके ग्रहण 4.3 में ठीक काम करता है।

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:

समस्या यह है कि जब मैं cmake में" find_package (JNI) "का उपयोग करें और") संदेश ("का उपयोग समारोह JNI चर को दिखाने के लिए, मैं निम्नलिखित परिणाम है (जेएनआई) "ऐसा लगता है कि ओपनजेडीके जेआरई से संबंधित कुछ जावा घटक मिल सकते हैं और" अपडेट-विकल्प "द्वारा इंगित मेरे वर्तमान ओरेकल जावा 7 जेडीके घटकों को नहीं मिला।

मैं जानना चाहता हूं कि "FindJNI.cmake" फ़ाइल में कोई भी बग है और ओरेकल जावा 7 जेडीके सेटअप में जो मैंने याद किया है, ताकि cmake "find_package (JNI)" ठीक से काम कर सके।

किसी भी सुझाव के लिए धन्यवाद।

उत्तर

22

आप अपने स्थापित जेडीके को खोजने में मदद के लिए FindJNI.cmake मैन्युअल रूप से संशोधित कर सकते हैं। इस सार देखें:

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

यह एक शर्म की बात है इस स्क्रिप्ट अद्यतन नहीं किया गया है, लेकिन शायद नहीं एक आश्चर्य यह देखते हुए कि CMake इस तरह के एक आपदा है।

संपादित करें: JAVA_HOME ठीक से सेट करने के लिए एक और सीधा समाधान है। OpenJDK 7 इंस्टॉल होने के बाद, मैं इसके साथ सेट करें:

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

+0

'FindJNI.cmake' को बदलकर मेरे साथ समस्या ठीक हुई .. धन्यवाद। –

+2

एर .... सीएमके के बारे में विनाशकारी क्या है? –

4

आप ओरेकल JDK 7 आपके सिस्टम पर स्थापित किया है, के रूप में मेरे मामले था, तो आप opencv के निर्माण में समस्याएं आ रही हो सकता है। उन मुद्दों को हल करने के लिए, मुझे संपादित करना था, /usr/share/cmake-2.8/Modules/FindJNI.cmake फ़ाइल। इस फ़ाइल में, मैंने ओपनजेडके और डिफ़ॉल्ट के संदर्भों के साथ लाइनों पर टिप्पणी की और नीचे दिखाए गए ओरेकल जेडीके 7 के संदर्भों को जोड़ा।

JAVA_APPEND_LIBRARY_DIRECTORIES(JAVA_AWT_LIBRARY_DIRECTORIES 
    ${_JAVA_HOME}/jre/lib/{libarch} 
    ${_JAVA_HOME}/jre/lib 
    ${_JAVA_HOME}/lib 
    ${_JAVA_HOME} 
    /usr/lib 
    /usr/local/lib 
    /usr/lib/jvm/java/lib 
    /usr/lib/java/jre/lib/{libarch} 
    /usr/lib/jvm/jre/lib/{libarch} 
    /usr/local/lib/java/jre/lib/{libarch} 
    /usr/local/share/java/jre/lib/{libarch} 
    /usr/lib/j2sdk1.4-sun/jre/lib/{libarch} 
    /usr/lib/j2sdk1.5-sun/jre/lib/{libarch} 
    /opt/sun-jdk-1.5.0.04/jre/lib/{libarch} 
    /usr/lib/jvm/java-6-sun/jre/lib/{libarch} 
    /usr/lib/jvm/java-1.5.0-sun/jre/lib/{libarch} 
    /usr/lib/jvm/java-6-sun-1.6.0.00/jre/lib/{libarch}  # can this one be removed according to #8821 ? Alex 
    #/usr/lib/jvm/java-6-openjdk/jre/lib/{libarch}  # Commented by Atul 
    #/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/{libarch}  # fedora 
    # Debian specific paths for default JVM 
    #/usr/lib/jvm/default-java/jre/lib/{libarch}  # Commented by Atul 
    #/usr/lib/jvm/default-java/jre/lib   # Commented by Atul 
    #/usr/lib/jvm/default-java/lib    # Commented by Atul 
    # OpenBSD specific paths for default JVM 
    /usr/local/jdk-1.7.0/jre/lib/{libarch} 
    /usr/local/jre-1.7.0/lib/{libarch} 
    /usr/local/jdk-1.6.0/jre/lib/{libarch} 
    /usr/local/jre-1.6.0/lib/{libarch} 
    /usr/lib/jvm/java-7-oracle/jre/lib/{libarch} # This is added Atul 
) 

और अनुभाग जहां स्क्रिप्ट के लिए पुस्तकालय शामिल हैं लग रहा है में ...

set(JAVA_AWT_INCLUDE_DIRECTORIES 
    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.4;JavaHome]/include" 
    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.3;JavaHome]/include" 
    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\${java_install_version};JavaHome]/include" 
    ${_JAVA_HOME}/include 
    /usr/include 
    /usr/local/include 
    /usr/lib/java/include 
    /usr/local/lib/java/include 
    /usr/lib/jvm/java/include 
    /usr/lib/jvm/java-6-sun/include 
    /usr/lib/jvm/java-1.5.0-sun/include 
    /usr/lib/jvm/java-6-sun-1.6.0.00/include  # can this one be removed according to #8821 ? Alex 
    #/usr/lib/jvm/java-6-openjdk/include 
    /usr/local/share/java/include 
    /usr/lib/j2sdk1.4-sun/include 
    /usr/lib/j2sdk1.5-sun/include 
    /opt/sun-jdk-1.5.0.04/include 
    # Debian specific path for default JVM 
    #/usr/lib/jvm/default-java/include 
    # OpenBSD specific path for default JVM 
    /usr/local/jdk-1.7.0/include 
    /usr/local/jdk-1.6.0/include 
    /usr/lib/jvm/java-7-oracle/include 
) 

तब मैं एंड्रॉयड के लिए openCV निर्माण करने के लिए सटीक निर्देश का पालन किया।

मुझे ओपनजेड और डिफ़ॉल्ट संबंधित लाइनों पर टिप्पणी करना पड़ा, क्योंकि वे ऑरैकल इंस्टॉलेशन के साथ संघर्ष कर रहे थे।

संबंधित मुद्दे