java - 如何找到 Java Desktop API 在 Linux 上需要哪些库?

标签 java linux swing java-native-interface awt

我正在尝试找到一种方法来确定 Java 需要哪些库才能使桌面 API 工作,特别是 BROWSE 函数。我阅读了一些指南、错误报告和解决方法,但都没有用。

我能够通过安装 libgnome2-0gvfs-backends 包使其在 Debian 上运行。通常推荐第一个(解决相同问题的人),第二个是幸运的猜测,因为桌面 API 似乎需要 vfs。但是,即使安装了这两个软件包,我也无法在 Ubuntu 14.04 上进行这项工作。

所以我的问题是:如何找到 Java Desktop API 在 Linux 上需要哪些库?特别是 Ubuntu 14.04 上的 Oracle JDK 8。是否有可能以某种方式捕获桌面 API 使用的库或从 native 代码中获取一些错误输出?

编辑:我创建了一个尝试使用浏览器的单行代码:

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 native 库和 linux native 库,但我不确定如何检测实际丢失的内容。

输出示例:

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 浏览功能需要哪些 native 库。我无法触摸调用浏览的代码。

EDIT2:我尝试在另一台机器上安装具有完整 Gnome 环境的新 Ubuntu 14.04,它可以正常工作。但是我真的很想避免这种情况,因为它添加了 1.5GB 的(大部分)未使用的库。仍在寻找一种方法,如何从失败的地方找到 Java 确切需要或至少需要某种输出的方法。

最佳答案

前往 the source可能在这里有所帮助。挖掘 Makefile ,我发现这些包括:

EXTRA_INCLUDES = `pkg-config --cflags glib-2.0` \
                 `pkg-config --cflags libgnome-2.0` \
                 `pkg-config --cflags gnome-vfs-2.0`\
                 `pkg-config --cflags gnome-vfs-module-2.0` \
                 `pkg-config --cflags bonobo-activation-2.0` \
                 `pkg-config --cflags libbonobo-2.0` \
                 `pkg-config --cflags ORBit-2.0` \
                 `pkg-config --cflags gconf-2.0`

就这样了:)

关于java - 如何找到 Java Desktop API 在 Linux 上需要哪些库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33296555/

相关文章:

linux - 在 shell 脚本中使用\c

java - 将字体传递给 JPanel 上的组件

java - 将 JOptionPane 的 showConfirmDialog 与 Java Application 一起移动

java - DocuSign Rest API 轮询状态更新

java - 替换 Android 默认字体文件

linux - 重命名docker容器中的文件

linux - 尝试加入 ps 和 pwdx linux 命令的输出

java - Java 打印中的方向没有改变

java - JOption 上的变量显示 2 次

java - java中的Map.Node<K,V>类是什么?