如何找到Java Desktop API在Linux上需要哪些库?
2022-09-04 23:31:31
我试图找到一种方法来确定Java需要哪些库才能使桌面API工作,特别是函数。我阅读了一些指南,错误报告和解决方法,但没有一个有效。BROWSE
我能够通过安装和软件包使它在 Debian 上工作。第一个通常是推荐的(由解决相同问题的人推荐),第二个是幸运的猜测,因为桌面API似乎需要vfs。但是,我无法在Ubuntu 14.04上完成这项工作,即使安装了这两个软件包。libgnome2-0
gvfs-backends
所以我的问题是:如何找到Java Desktop API在Linux上需要哪些库?特别是Ubuntu 14.04上的Oracle JDK 8。是否有可能以某种方式捕获桌面 API 正在使用哪些库,或者从本机代码中获取一些错误输出?
编辑:我创建了一个尝试使用浏览的一行代码:
public class Main {
public static void main(String[] args) throws URISyntaxException, IOException {
Desktop.getDesktop().browse(new URI("http://www.google.com"));
}
}
我尝试运行一个命令来跟踪在执行测试期间请求的所有文件:
strace -e open,access -f -o browse java -jar BrowseTester.jar
我得到了很多输出,表明java原生和Linux原生库都在寻找,找到和访问,但我不知道如何检测实际缺少的内容。
输出示例:
30171 open("/usr/lib/x86_64-linux-gnu/gvfs/tls/x86_64/libgvfscommon.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
30171 open("/usr/lib/x86_64-linux-gnu/gvfs/tls/libgvfscommon.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
30171 open("/usr/lib/x86_64-linux-gnu/gvfs/x86_64/libgvfscommon.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
30171 open("/usr/lib/x86_64-linux-gnu/gvfs/libgvfscommon.so", O_RDONLY|O_CLOEXEC) = 11
我需要一种方法来检测 Java 桌面 API 浏览功能需要哪些本机库。我无法触摸正在调用浏览的代码。
编辑2:我试图在另一台机器上安装一个新的Ubuntu 14.04与完整的Gnome环境,它可以工作。但是,我真的很想避免这种情况,因为它增加了1.5GB(大多数)未使用的库。仍然在寻找一种方法,如何找到Java需要的确切内容,或者至少从它失败的地方找到某种输出。