在我的情况下,java.lang.UnsatisfiedLinkError的原因是什么

时间:2015-01-27 11:58:44

标签: java visual-studio java-native-interface

我使用Visual Studio 2008构建一个dll,并且它通过jni在java端调用。 它在A机器上工作正常,但在B机器上失败了。 错误信息如下: java.lang.UnsatisfiedLinkError:xxx.dll无法找到依赖库

配置信息如下(OS和jdk相同):

机器:

  • Win7 64bit;
  • java版本" 1.7.0_21" Java(TM)SE运行时环境(版本1.7.0_71-b14) Java HotSpot(TM)客户端VM(构建24.71-b01,混合模式,共享)
  • 蚀规格的开普勒-SR2-Win32的x86_64的

B机:

  • Win7 64bit;
  • java版本" 1.7.0_65" Java(TM)SE运行时环境(版本1.7.0_65-b19) Java HotSpot(TM)客户端VM(构建24.71-b01,混合模式,共享)
  • 蚀-java的露娜-SR1a-的win32

dll的代码生成多线程调试(/ MTd)

我不知道原因,如果您需要更多信息来判断原因,请告诉我。

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

要查找错过的依赖项,请使用Dependency Walker。打开你的DDL,它会显示它所依赖的所有DDL。它还会显示当前系统中找不到哪一个。

http://www.dependencywalker.com/

答案 1 :(得分:0)

java.lang.UnsatisfiedLinkError:xxx.dll无法找到依赖库在B机器中抛出而在A机器中抛出是因为dll无法找到dll的依赖库在B机器中并修复它,您可以添加依赖库的路径到环境路径。要获取依赖库,请遵循@ SubOptimal的建议。