gpt4 book ai didi

java - 如果正在运行的 Java 程序中没有安装 LibVLC,我该如何告诉 Linux Distro 进行 apt-get install LibVLC?

转载 作者:太空狗 更新时间:2023-10-29 11:44:29 25 4
gpt4 key购买 nike

我正在开发一个利用 Caprica's VLCJ Bindings 的程序.

这对 Windows 和 Mac 来说很好,因为我可以将它们的 VLC 库打包到一个 zip 文件中,并在适当的地方将它们输出到用户机器。

当我需要为 Linux 执行此操作时,问题就来了,因为,亲爱的上帝,

enter image description here

有十一个。单独编译。应用程序/库。

其中一些甚至有自己的口味。它就像操作系统的 Baskin Robins(我知道有一些,但我只真正运行过 Ubuntu,所以我没有为此做好准备)。

如果我是一个受虐狂,我完全可以完成这项工作并最终得到一个巨大的 jar,其中包含数量多得离谱的压缩 Linux 库,但我真的,嘿嘿嘿,不想那样做。

所以我认为最好的做法是检查是否安装了 LibVLC,如果安装了,直接引用它,如果没有,则在运行时安装(在库尝试安装之前)加载自身),或者甚至在 Java 程序的启动/安装时加载。

这可能吗?我知道在使用终端的 Ubuntu 上它类似于

sudo apt-get install vlc

可能有 15 种不同的风格,这很好,我可以处理,但是是否可以从正在运行的 Java 应用程序中执行此操作(并等到它完成后再继续),如果可以,我该怎么做才能做到这一点,如果做不到,我的状况如何?

最佳答案

要检测 LibVLC 是否已经安装,可以在纯 Java 中通过使用 Java 文件 IO 搜索文件系统来完成。这个想法是你会在“/usr/lib”和/或其他“知名”位置寻找“libvlc.so.*”。

vlcj 提供了一个 NativeDiscovery 类,它会为您做这件事:

boolean foundLibVLC = new NativeDiscovery().discover();

您可以找到 Javadoc here .

然后您可以抛出一个对话框,提示用户使用他们的包管理器安装 vlc。

或者您可以通过使用 Java 文件 IO 读取“/etc/issue”来检测操作系统,如果它是 Ubuntu,您可以启动一个进程来运行“apt-get install”,或者为不同的发行版使用不同的包管理器.我用过 Apache Commons-Exec以前做过这种事。

根本没有您可以跨不同发行版使用的通用包管理器。

我知道这并不理想,但这就是我为我的项目所做的。

公平地说,如果您的目标用户是 Linux 用户,那么您可能会比大多数用户更精通技术,而且他们在安装其他软件时可能没有问题。

我想还有一个选择是将 VLC 源代码与您的项目一起发送,并让您的安装程序构建 VLC。不过,从头开始构建 VLC 需要一段时间,并且必须首先安装许多第三方库依赖项。

我想在 Linux 上,“正确”的做法是创建一个发行版包(比如 .deb 或 .rpm 或其他东西),声明对 VLC、Java 和 JNA 的依赖,然后按照这种方式进行。

关于java - 如果正在运行的 Java 程序中没有安装 LibVLC,我该如何告诉 Linux Distro 进行 apt-get install LibVLC?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26129264/

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