我正在开发一个使用Caprica's VLCJ Bindings的程序。
这对Windows和Mac来说很好,因为我可以将它们的VLC库打包成zip文件,并在适当的时候将它们输出到用户机器。
当我需要为Linux做这件事时,问题出现了,因为,亲爱的上帝,
有ELEVEN。单独编译。应用/库。
其中一些人甚至有自己的口味。它就像OS的Baskin Robins(我知道有一些但是我真的只运行过Ubuntu所以我没有为此做好准备。)
如果我是一个受虐狂,我可以完全做到这一点,并最终得到一个巨大的罐子里面有一个非常大量的压缩的Linux库,但我真的,真的,不想那样做。
所以我认为最好的做法是检查是否安装了LibVLC,如果是,请直接引用它,如果不是,请在运行时安装它(在库尝试之前)即使在Java程序的启动/安装时,也可以加载它自己。),
这可能吗?我知道在使用终端的Ubuntu上它会类似于
sudo apt-get install vlc
并且可能有15种不同的风格,这很好,我可以处理它,但是可以在正在运行的Java应用程序中执行此操作(并等到它完成后再继续),如果是这样,我怎么能这样做,如果没有,我怎么了?
答案 0 :(得分:3)
要检测是否已安装LibVLC,只需使用Java File IO搜索文件系统,就可以在纯Java中执行此操作。这个想法是你要找" libvlc.so。*" in" / usr / lib"和/或其他"众所周知的"位置。
vlcj提供了一个NativeDiscovery
类,它将为您完成此任务:
boolean foundLibVLC = new NativeDiscovery().discover();
你可以找到Javadoc here。
然后,您可以抛出一个对话框,提示用户使用其包管理器安装vlc。
或者您可以通过使用Java File IO来读取" / etc / issue"来检测操作系统。如果它是Ubuntu,你可以启动一个进程来运行" apt-get install",或者一个不同的包管理器用于另一个发行版。我之前使用Apache Commons-Exec来做这类事情。
你可以在不同的发行版中假设没有通用的包管理器。
我知道这并不理想,但这就是我为我的项目所做的事情。
公平地说,如果您在Linux上定位用户,那么您很可能会瞄准比大多数用户更精通技术的用户,他们可能没有安装其他软件的问题。
我认为另一个选项是将VLC源代码与您的项目一起发布,并让您的安装程序构建VLC。虽然从头开始构建VLC需要一段时间,并且必须首先安装许多第三方库依赖项。
我想在Linux上,正确的'要做的是创建一个发行版包(如.deb或.rpm或其他东西),声明对VLC,Java和JNA的依赖,并以这种方式执行。