在编译OpenCV的时候,配置了JAVA_HOME环境变量,但JNI还是不生效,原因未知,但有规避的方法:直接在CMake文件里面把JNI相关的CMake变量全部配置上。变量参考:FindJNI — CMake 3.1.3 Documentation
例如:在OpenCV根目录下的CMake文件中,找到Java环境变量的位置
——————————————————————————————————
# --- Java Support ---
if(BUILD_JAVA)
if(ANDROID)
include(cmake/android/OpenCVDetectAndroidSDK.cmake)
else()
include(cmake/OpenCVDetectApacheAnt.cmake)
find_package(JNI)
——————————————————————————————————
然后添加find_package(JNI)中本应该设置的变量
set(JAVA_INCLUDE_PATH /Users/qiumin/Desktop/bas/jdk-14.0.2.jdk/Contents/Home/include)
set(JAVA_INCLUDE_PATH2 /Users/qiumin/Desktop/bas/jdk-14.0.2.jdk/Contents/Home/include/darwin)
set(JAVA_AWT_INCLUDE_PATH /Users/qiumin/Desktop/bas/jdk-14.0.2.jdk/Contents/Home/include)
set(JAVA_AWT_LIBRARY /Users/qiumin/Desktop/bas/jdk-14.0.2.jdk/Contents/Home/lib)
set(JAVA_JVM_LIBRARY /Users/qiumin/Desktop/bas/jdk-14.0.2.jdk/Contents/Home/lib)
set(JNI_FOUND TRUE)
set(JNI_LIBRARIES
${JAVA_AWT_LIBRARY}
${JAVA_JVM_LIBRARY}
)
set(JNI_INCLUDE_DIRS
${JAVA_INCLUDE_PATH}
${JAVA_INCLUDE_PATH2}
${JAVA_AWT_INCLUDE_PATH}
)
再次config,虽然还会有标题的中错,但JNI实际已经配置好。如下
Python (for build): /usr/bin/python2.7
Java:
ant: /usr/local/bin/ant (ver 1.10.8)
JNI: /Users/qiumin/Desktop/bas/jdk-14.0.2.jdk/Contents/Home/include /Users/qiumin/Desktop/bas/jdk-14.0.2.jdk/Contents/Home/include/darwin /Users/qiumin/Desktop/bas/jdk-14.0.2.jdk/Contents/Home/include
Java wrappers: YES
Java tests: YES
Install to: /usr/local