今天我和JNI
度过了一段艰难的时光,基本上我想要做的是将OpenAlpr
集成到我的Java
项目中,我使用的是预编译的二进制文件,当我运行java_test.bat
文件时,它可以很好地工作。 起初Java一直告诉我它无法找到openAlprJni
然后我将dlls
的路径添加到我的构建路径和系统路径,之后我开始体验openAlprJni.Alpr.initialize(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
根据文档意味着库本身不行,但是由于测试程序正在运行,它已经可以了,我已经查看了各种论坛,甚至还与OpenAlpr
的作者OpenAlpr
但是仍然不能解决这个问题,这里有谁有类似的问题帮我解决这个问题? 提前致谢。
请查看com.openalpr.jni.Alpr 。 在第12行,您会发现:
private native void initialize(String country, String configFile, String runtimeDir);
此方法与标头com_openalpr_jni_Alpr.h匹配:
/* * Class: com_openalpr_jni_Alpr * Method: initialize * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V */ JNIEXPORT void JNICALL Java_com_openalpr_jni_Alpr_initialize(JNIEnv *, jobject, jstring, jstring, jstring);
您将看到您正在“体验”的只是此initialize
方法的方法签名,该方法签名返回void
并采用Ljava/lang/String;
类型的三个参数Ljava/lang/String;
。
当您将示例添加到工作区时,可能会破坏示例(检查包名称)。 请注意,您使用的* .dll可能是针对com_openalpr_jni_Alpr
编译的,而不是针对com_openalpr_jni_Alpr
编译的。
我认真地建议你学习JNI概念, 在这里你找到了一个很好的起点。
以上就是c/c++开发分享Java JNI错误java.lang.UnsatisfiedLinkError:xxxx()V相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/519530.html