Java JNI error java.lang.UnsatisfiedLinkError: xxxx()V

Java JNI error java.lang.UnsatisfiedLinkError: xxxx()V

我今天在 JNI 上遇到了困难,基本上我想做的是将 OpenAlpr 集成到我的 Java 项目中,我使用的是预编译的二进制文件,当我 运行 java_test.bat 文件。一开始 Java 一直告诉我找不到 openAlprJni 然后我将 dlls 的路径添加到我的构建路径和系统路径,之后我开始遇到 openAlprJni.Alpr.initialize(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V 根据文档,这意味着库本身不正常,但由于测试程序是 运行ning,所以没问题,我查看了各种论坛,甚至与 OpenAlpr 的作者交谈,但仍然不能解决这个问题,这里有没有遇到过类似问题的人帮我解决这个问题?提前致谢。

请看com.openalpr.jni.Alpr。在第 12 行中,您会发现:

private native void initialize(String country, String configFile, String runtimeDir);

此方法匹配 header 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);

你会看到你的 "experiencing" 只是这个 initialize 方法的方法签名,它 returns void 并接受三个 [=14] 类型的参数=].

您可能在将示例添加到工作区时破坏了这些示例(检查包名称)。请注意,您使用的 *.dll 可能是针对 com_openalpr_jni_Alpr 而不是 jni_Alpr.

编译的

我强烈建议你学习 JNI 概念,here你找到了一个很好的起点。