解决 JNI 项目中的 UnsatisfiedLinkError:缺少依赖库
在 JNI 项目中,出现 UnsatisfiedLinkError 并显示消息“找不到依赖库”当自定义库(例如 mylib.dll)依赖于系统搜索路径中不可用的第三方库(例如 libsndfile-1.dll)时,可能会出现“”。要解决此问题,需要遵循几个关键步骤:
-
确保正确的 DLL 放置: 放置自定义 DLL (mylib.dll) 和所需的依赖项 (libsndfile- 1.dll)与 Java 应用程序的 JAR 文件位于同一目录中。
-
验证 DLL 函数命名: 检查自定义 DLL 中的函数名称是否与 JNI 标头中定义的函数名称完全匹配文件。如有必要,请在构建过程中调整链接器标志以确保正确的方法命名。
-
考虑 Windows 特定行为: 在 Windows 上,如果 java.library.path 系统属性未明确指定设置后,DLL 必须驻留在当前工作目录或 Windows PATH 环境变量中包含的目录中。
其他故障排除提示:
- 验证 Dependency Walker 警告: 即使 dependency walker 显示 MPR.DLL 和 SHLWAPI.DLL 的未解析导入,这些警告通常也可以被忽略,如 DW 常见问题解答中所述。
-
检查共享库搜索路径: 使用命令“java -XshowSettings:properties -version”(Java 8 及更高版本中可用)显示共享库搜索路径并验证所需的 DLL 是否可访问。
-
消除类路径问题:类路径和共享库搜索路径是独立且不相关的。确保所有必需的 JAR 文件都正确包含在类路径中。
通过仔细执行这些步骤,开发人员可以解决与 JNI 项目中缺少依赖库相关的 UnsatisfiedLinkErrors,从而使他们的应用程序顺利运行。
以上是为什么我的 JNI 项目抛出'UnsatisfiedLinkError:找不到依赖库”?的详细内容。更多信息请关注PHP中文网其他相关文章!