gpt4 book ai didi

java - 无法在其他系统上加载 native 库

转载 作者:行者123 更新时间:2023-12-01 12:13:09 26 4
gpt4 key购买 nike

我正在开发一个使用 libjahspotify 的应用程序。该程序正在我的台式机 (Windows 7) 上运行,当尝试在我的笔记本电脑 (Windows 8.1) 或我的其他英特尔 NUC (Windows 7) 上运行它时,我收到以下错误:

Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\temp\jahspotify.dll: Can't find dependent libraries
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1929)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1814)
at java.lang.Runtime.load0(Runtime.java:809)
at java.lang.System.load(System.java:1083)
at jahspotify.JahSpotifyNativeLoader.<init>(JahSpotifyNativeLoader.java:90)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:408)
at java.lang.Class.newInstance(Class.java:438)
at jahspotify.impl.JahSpotifyImpl.<clinit>(JahSpotifyImpl.java:730)
at jahspotify.services.JahSpotifyService.initialize(JahSpotifyService.java:56)
at jahspotify.services.JahSpotifyService.getInstance(JahSpotifyService.java:26)
at jahspotify.services.JahSpotifyService.initialize(JahSpotifyService.java:39)
at net.functionseven.divicantus.spotify.Spotify.init(Spotify.java:29)
at net.functionseven.divicantus.Divicantus.main(Divicantus.java:20)

libjahspotify 中的 native-jar 应该自动加载 dll,但事实并非如此。此时似乎 jahspotify.dll 尚未加载。如果我手动将 jahspotify.dll 复制到该文件夹​​,native-jar 会按照预期删除它。

我已经重新编译了 libjahspotify 多次并检查了多次 java 和 dll 都是 x86。我还尝试使用 System.load() 手动加载它,但出现了如下类似的错误。

Exception in thread "main" java.lang.UnsatisfiedLinkError: Can't load library: C:\temp\jahspotify.dll
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1817)
at java.lang.Runtime.load0(Runtime.java:809)
at java.lang.System.load(System.java:1083)
at net.functionseven.divicantus.Divicantus.main(Divicantus.java:24)

我对正在发生的事情感到茫然。

最佳答案

最可能的原因是第二个系统缺少 jahspotify.dll 所需的一些 dll。您可以使用 Dependency Walker ( http://www.dependencywalker.com/ ) 检查需要哪些 dll,并尝试手动将它们与 jahspotify.dll 放在一起。通常丢失的 DLL 来自 c++ 可再发行软件包等。

关于java - 无法在其他系统上加载 native 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27169824/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com