【发布时间】:2017-12-15 14:38:25
【问题描述】:
我正在尝试将 JNI 用于使用 OpenCV4Android 库的 Android 应用程序。我可以在不使用 opencv 库的情况下生成头文件,但是每当类导入任何内容时都会出错。我认为它需要链接到图书馆,但我不知道该怎么做?我在 Windows 8.1 64 位机器上使用 cygwin。
原始输出:
$ javah -jni -classpath ./bin/classes -d jni/ com.example.icam.nativeRDE
Error: Class org.opencv.core.Mat could not be found.
听从Android, generate jni Header Files with javah , show error that can't find org.opencv.core.Mat 的建议后,我得到以下输出:
$ javah -classpath /cygdrive/c/Users/Majid/Documents/OpenCV4Android/OpenCVLib2.4.8/bin/classes/org/opencv/;/cygdrive/c/Users/Majid/Documents/OpenCV4Android/iCam/bin/classes/com/example/icam/ -jni -d jni/ com.example.icam.nativeRDE
Error: no classes specified
-bash: /cygdrive/c/Users/Majid/Documents/OpenCV4Android/iCam/bin/classes/com/example/icam/: is a directory
我试过了:
- 删除 icam 后的“/”
- 在“icam/”之后添加 nativeRDE
- 在“icam/”之后添加 nativeRDE.class
感谢您的帮助。
【问题讨论】:
-
我尝试按照该线程的建议进行操作,但出现错误。我应该在我的原始帖子中提到它,但我现在已经编辑了它。
-
你试过
javah -classpath c:\Users\Majid\Documents\OpenCV4Android\OpenCVLib2.4.8\bin\classes\org\opencv;c:\Users\Majid\Documents\OpenCV4Android\iCam\bin\classes\com\example\icam -jni -d jni/ com.example.icam.nativeRDE吗?或者也许(我没有准备好验证的环境),您可以使用正向(Unix 样式)斜杠 /。原因是 javah 不是 cygwin 可执行文件,因此它不理解/cygdrive。您已经注意到在 Windows 中需要 ";" 分隔符,而不是 referenced topic 中的 ":" -
是的,但它仍然无法正常工作。我想我有一个解决方法,所以希望应该没问题。
-
一般来说,您不需要
javah在Android 上构建和运行您的JNI 代码。
标签: java android opencv java-native-interface javah