我正在尝试找到一种方法来确定 Java 需要哪些库才能使 Desktop API 工作,特别是BROWSE
功能。我读了一些指南、错误报告和解决方法,但它们都不起作用。
我可以通过安装使其在 Debian 上运行libgnome2-0
and gvfs-backends
包。第一个通常是推荐的(由解决相同问题的人),第二个是一个幸运的猜测,因为桌面 API 似乎需要 vfs。然而,即使安装了这两个软件包,我也无法在 Ubuntu 14.04 上完成这项工作。
所以我的问题是:如何找到 Java Desktop API 在 Linux 上需要哪些库?特别是 Ubuntu 14.04 上的 Oracle JDK 8。是否有可能以某种方式捕获桌面 API 使用哪些库或从本机代码获取一些错误输出?
EDIT:我创建了一行代码,尝试使用浏览:
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 Desktop API 浏览功能所需的本机库。我无法触及调用浏览的代码。
EDIT2:我尝试在另一台机器上安装具有完整 Gnome 环境的新 Ubuntu 14.04,并且它可以工作。然而我真的很想避免这种情况,因为它增加了 1.5GB 的(大部分)未使用的库。仍在寻找一种方法,如何准确地找到 Java 所需要的内容,或者至少从失败的地方找到某种输出。