2012-02-01 20 views
0

我想从Linux系统导入IntelliJ Java Web应用程序项目(Maven项目)到一个Windows系统。这个java程序依靠2个外部库运行。IntelliJ java.lang.UnsatisfiedLinkError:C: User ... java_bridge.dll:无法找到从属库

在linux系统上,当我运行我的测试用例(并成功通过)时,这两个库都可以正常加载,但是当我移至Windows系统时,其中一个库不能正常工作(并且我确实确保得到approproaite窗口二进制文件)。

我不断收到错误

Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\Users\Admin\Desktop\SAINT\Packages\cellml-sdk-1.9\lib\cellml_java_bridge.dll: Can't find dependent libraries 

在这一点上,我不知道我做错了,因为.dll文件出现在目录中。 .dll的位置也出现在windows PATH变量中,并且我使用-Djava.library.path = C:\ Users \ Admin \ Desktop \ SAINT \ Packages \ cellml-sdk-1.9 \ lib指定给java

感谢

回答

0

查看事件日志中的Windows并排(SxS)消息。他们可能会指向失踪的DLL。如果没有,使用dependency walker

+0

好的,所以我运行了D.Walker,它给了我3个缺失的依赖关系。我已经将这些DLL的位置添加到PATH,但依赖步行者仍然告诉我它找不到它们。有什么建议么? – 2012-02-01 03:35:50

+0

啊,DW很难用。你必须揣摩它来试图弄清楚发生了什么。 Evenlog通常是更容易的选择。如果这不起作用,你也可以从sysinternals中尝试进程监视器,它会显示你正在尝试在PATH中查找DLL并获取找不到文件的错误。 – 2012-02-01 03:41:04

+0

好吧,有很多东西,我有点过滤到我跑失败测试的时间。我在寻找什么样的信息? – 2012-02-01 03:55:03

0

错误消息说:无法找到依赖库。您拥有的DLL需要其他DLL,并且它们需要位于PATH环境变量中的目录中,而不是java.library.path。

要查看依赖关系是什么,可以使用objdump。

您尚未将完整路径添加到PATH的.dll文件,对吗?只需将包含依赖项的目录放入路径即可。

+0

有没有一种方法,我可以找出哪些DLL是必需的,他们应该在哪里。当我在linux上这样做时,它变得更简单了...... – 2012-02-01 02:46:58