Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
IntelliJ java.lang.UnsatifiedLinkError:C:\User\…\java_bridge.dll:Can';找不到依赖库_Java_Maven_Windows 7_Intellij Idea_Unsatisfiedlinkerror - Fatal编程技术网

IntelliJ java.lang.UnsatifiedLinkError:C:\User\…\java_bridge.dll:Can';找不到依赖库

IntelliJ java.lang.UnsatifiedLinkError:C:\User\…\java_bridge.dll:Can';找不到依赖库,java,maven,windows-7,intellij-idea,unsatisfiedlinkerror,Java,Maven,Windows 7,Intellij Idea,Unsatisfiedlinkerror,我正在尝试将IntellijJavaWeb应用程序项目(Maven项目)从linux系统导入Windows系统。这个java程序依赖于2个外部库来运行 在linux系统上,当我运行测试用例(并成功通过)时,两个库都可以正常加载,但是当我转到windows系统时,其中一个库不再正常工作(是的,我确实确保获得了适当的windows二进制文件) 我一直在犯错误 Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\Users\Adm

我正在尝试将IntellijJavaWeb应用程序项目(Maven项目)从linux系统导入Windows系统。这个java程序依赖于2个外部库来运行

在linux系统上,当我运行测试用例(并成功通过)时,两个库都可以正常加载,但是当我转到windows系统时,其中一个库不再正常工作(是的,我确实确保获得了适当的windows二进制文件)

我一直在犯错误

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


谢谢

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

要查看依赖项是什么,可以使用objdump


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

在事件日志中查找windows并排(SxS)消息。它们可能会指向丢失的dll。如果没有,请使用

是否有办法确定需要哪些dll以及它们应该在哪里。当我在linux上这样做时,它要简单得多……好吧,我运行了D.Walker,它给了我3个缺少的依赖项。我已经将这些dll的位置添加到路径中,但dependency walker仍然告诉我它找不到它们。有什么建议吗?啊,DW很难使用。你得四处看看,看看到底发生了什么。Evenlog通常是比较容易的选择。如果这不起作用,您也可以尝试从Sysinternal中使用Process Monitor,它将显示java试图在PATH中查找DLL并获取未找到文件的错误。好的,有很多东西,我将其过滤到运行失败测试的时间。我在寻找什么样的消息?停止java。仅在进程上进行筛选(java.exe)。过滤器仅显示文件访问(忽略网络、注册表、进程)。开始你的测试过程。这应该是可管理的,比如1000个条目以下。查找对失败dll的访问权限。在java.exe读取您的dll之后,它将尝试读取它所依赖的dll,但将无法找到它们。好的,在process monitor中,我找到了cellml_java_bridge.dll第一次出现的位置,正如您所说,它将在各种dll处停止。我分别将每个dll的位置添加到路径中,最后一个加载的是msvcr80.dll,java似乎成功地找到了所有dll,尽管我不完全确定如何区分它是否成功。然后它只是循环回“读取文件”C:\Users\…\cellml\u java\u bridge.dll(重复4次),然后“关闭文件”。最后它运行“线程退出”-->然后它似乎开始整理IntelliJ中仍然失败的测试。