今天我在JNI
度过了一段艰难的时光,基本上我要做的就是将OpenAlpr
集成到我的Java
项目中,我正在使用预编译的二进制文件,当我运行时它可以正常工作java_test.bat
文件。起初Java一直告诉我它找不到openAlprJni
然后我将dlls
的路径添加到我的构建路径和系统路径,之后我开始体验openAlprJni.Alpr.initialize(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
根据文档意味着库本身不行,但是测试程序运行正常,我查看了各种论坛,甚至与OpenAlpr
的作者交谈过但仍然无法解决这个问题,这里有没有人谁有类似的问题帮我解决这个问题?提前谢谢。
答案 0 :(得分:0)
请查看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;
的三个参数。
当您将示例添加到工作区时,可能会破坏示例(检查包名称)。请注意,您使用的* .dll可能是针对com_openalpr_jni_Alpr
而不是jni_Alpr
编译的。
我认真地建议你学习JNI概念,here你找到了一个很好的起点。