vlcj jna unsatisfied link错误无法定位本机库
Vlcj jna unsatisfied link error unable to locate native libraries
我已经看过链接
Link 1
Link 2
Link 3
这些是我的系统规格
Windows 64 位
Java 11 64 位
VLC 32 位
-
这是我的代码
NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(),"C:Program Files (x86)\VideoLAN\VLC");
Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName(),LibVlc.class);
这是我的错误
java.lang.UnsatisfiedLinkError: Unable to load library 'libvlc': JNA native support (win32-amd64/libvlc.dll) not found in resource path (C:\Program Files\Java\Vlcj\jna-3.5.2.jar;C:\Program Files\Java\Vlcj\platform-3.5.2.jar;C:\Users\Home\Documents\NetBeansProjects\JDK Examples\Chat Application\Tests\build\classes)
现在我知道你不应该使用 64 位 JRE 加载 VLC 32 位库,这就是为什么我不希望这个程序工作(或者也许我不知道)但是错误消息以 IA32 或类似开头的东西可能会有所不同,但事实并非如此,正如您所看到的,尽管使用 NativeLibrary class 添加了搜索路径,但 Native class 似乎正在搜索 jar 文件中的 dll & 在我的项目路径中,但不在我明确提到的搜索路径中,所以我的本地人甚至无法找到 dll 文件。
有人帮忙吗?
我通过 3 个步骤解决了我的问题
1) 使用第一条评论中 link 建议的本机发现,因为 NativeLibrary.addSearchPath
没有做任何事情所以我删除了该行并将其替换为
new NativeDiscovery().discover();
2)使用vlc 64位
2) 由于某些原因,“主要修复”将我的 JDK 从 11 降级到 1.8 22=],我无法理解,但正是这一主要变化让 NativeDiscovery 得以发挥作用
我已经看过链接
Link 1
Link 2
Link 3
这些是我的系统规格
Windows 64 位
Java 11 64 位
VLC 32 位
这是我的代码
NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(),"C:Program Files (x86)\VideoLAN\VLC");
Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName(),LibVlc.class);
这是我的错误
java.lang.UnsatisfiedLinkError: Unable to load library 'libvlc': JNA native support (win32-amd64/libvlc.dll) not found in resource path (C:\Program Files\Java\Vlcj\jna-3.5.2.jar;C:\Program Files\Java\Vlcj\platform-3.5.2.jar;C:\Users\Home\Documents\NetBeansProjects\JDK Examples\Chat Application\Tests\build\classes)
现在我知道你不应该使用 64 位 JRE 加载 VLC 32 位库,这就是为什么我不希望这个程序工作(或者也许我不知道)但是错误消息以 IA32 或类似开头的东西可能会有所不同,但事实并非如此,正如您所看到的,尽管使用 NativeLibrary class 添加了搜索路径,但 Native class 似乎正在搜索 jar 文件中的 dll & 在我的项目路径中,但不在我明确提到的搜索路径中,所以我的本地人甚至无法找到 dll 文件。
有人帮忙吗?
我通过 3 个步骤解决了我的问题
1) 使用第一条评论中 link 建议的本机发现,因为 NativeLibrary.addSearchPath
没有做任何事情所以我删除了该行并将其替换为
new NativeDiscovery().discover();
2)使用vlc 64位
2) 由于某些原因,“主要修复”将我的 JDK 从 11 降级到 1.8 22=],我无法理解,但正是这一主要变化让 NativeDiscovery 得以发挥作用