背景:
我正在用 Java 编写一个跨平台的音频播放器。在 Linux 上,我以 appimage ( https://appimage.org/ )的形式分发它。我使用 VLC/VLCJ 作为解码引擎。
appimages 的基本准则是在 appimage 中包含所有必需的库,这些库不能合理地预期默认包含在发行版中。这样做是为了让用户不需要解决依赖项和/或与库和程序之间的版本差异作斗争。他们还建议针对少数 Linux 发行版的先前版本进行测试,以确认一切正常。
Ubuntu 16.04 和 Fedora 27.16 默认不安装 libvlc。我确信这对于许多其他发行版来说很常见。因此,我想在我的 appimage 中打包 libvlc 库。
问题:
在 Linux 上,我无法让 vlcj 识别/查找libvlc.so
,libvlccore.so
除非它们是通过发行版安装的。
设置:
我通过我的发行版安装了 VLC,我的程序运行并正常工作。
我将libvlc.so
、libvlccore.so
和其他关联库从我的发行版中的默认位置复制到我的项目中的文件夹中。
我将该文件夹添加到 Native Library Search 路径(见下面的代码)。
我卸载了 VLC。
我试图运行我的程序。它因下面粘贴的错误而崩溃。
注意:我在 Windows 上使用了相同的基本方法,它在那里完美运行。
简化代码:
String nativeVLCLibPath = Hypnos.getRootDirectory().resolve( "lib/nix/vlc/" ).toAbsolutePath().toString();
System.out.println ( "Trying to look for libraries in: " + nativeVLCLibPath );
NativeLibrary.addSearchPath( RuntimeUtil.getLibVlcLibraryName(), nativeVLCLibPath );
喵喔喔
动漫人物
回首忆惘然
相关分类