用户工具

站点工具


技术支持:jni常见问题排查

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

技术支持:jni常见问题排查 [2016/04/19 18:06] (当前版本)
neohope 创建
行 1: 行 1:
 +====== JNI常见问题排查 ======
 +
 +===== java.lang.UnsatisfiedLinkError:​ Can't find dependent libraries =====
 +这是因为,JVM找不到dll文件
 +解决方法:用参数-Djava.library.path指定了dll加载路径
 +
 +===== java.lang.UnsatisfiedLinkError:​ Can't load IA 32-bit .dll on a AMD 64-bit platform =====
 +这是因为,你的dll是32位的,JVM是64位的,在64位进程中,无法加载32位的DLL
 +解决方法:换JVM或DLL版本
 +
 +===== java.lang.UnsatisfiedLinkError:​ Can't load AMD 64-bit .dll on a IA 32-bit platform =====
 +这是因为,你的dll是64位的,JVM是32位的,在32位进程中,无法加载64位的DLL
 +解决方法:换JVM或DLL版本
 +
 +===== java.lang.UnsatisfiedLinkError:​ Can't load library: xxx.dll =====
 +  - 确认,dll不是Debug版本,而是Release版本
 +  - 确认,dll编译方式为MT还是MD,如果是MD,需要安装正确版本的vc_redist组件(与VisualStudio版本、CPU架构(x86,​x64)有关系)
 +  - 确认,是否有其他依赖的dll没有放到-Djava.library.path路径中,可以用工具depends排查问题(但不要拷贝系统自带dll)
 +
 +===== 其他测试方式 =====
 +  - 如果有C调用dll的测试例子,请直接运行,如果可以,则一般JNI是可以运行的
 +  - 如果C的例子可以运行,而JNI例子不能运行,就要尽快找DLL提供者沟通了
 +
 +===== 错误修正之后 =====
 +  - 告诉DLL的开发人员,补充说明文档,下次发布DLL时,带全依赖及说明
  
技术支持/jni常见问题排查.txt · 最后更改: 2016/04/19 18:06 由 neohope