如何查找 Linux 上 Java Desktop API 需要哪些库?

2023-12-27

我正在尝试找到一种方法来确定 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 所需要的内容,或者至少从失败的地方找到某种输出。


即将来源 https://java.net/projects/jdic/sources/svn/show/trunk/src/jdic/src/unix/native/jni可能会有所帮助。挖掘通过Makefile https://java.net/projects/jdic/sources/svn/content/trunk/src/jdic/src/unix/native/jni/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`

就这样你就得到了:)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何查找 Linux 上 Java Desktop API 需要哪些库? 的相关文章

随机推荐

  • 如何在不使用 javascript 的情况下将跨度设置为看起来像链接的样式?

    对于我的网站 我需要使用 span 代替 a 因为我主要使用 ajax 因此我将 onclick ajax 事件作为跨度中的属性而不是链接 因此 我必须手动设置跨度的样式 使其看起来像链接 我已经使用悬停和访问伪类来更改背景和文本颜色 但要
  • 来自 ResourceProcessor 的摘录投影和自定义链接

    我正在使用 spring data rest 2 4 1 将实体公开为休息资源 我还实现了一个ResourceProcessor添加到资源的自定义链接 Component public class MyEntityResourceProce
  • Jenkins“错误 403 请求中未包含有效的面包屑”

    我正在尝试使用以下命令通过 Windows 计算机的发布请求触发 Jenkins 构建 首先 我使用以下方法获取面包屑 curl http JENKINS URL crumbIssuer api xml xpath crumb 回复是这样的
  • 重用其他文件中的 XML 元素

    是否可以在另一个 XML 中使用其他文件中的 XML 元素 例如 而不是
  • Symfony 序列化器问题 - NotNormalizedValueException

    当我在 Symfony 4 1 中使用带有 FOSRestBundle 的序列化器时遇到问题 我有以下错误消息 无法规范化 App Entity Youp 类型的对象 未找到支持规范化器 Symfony Component Serializ
  • 用于检查进程是否正在运行的 shell 脚本

    发生了一些奇怪的行为 让我觉得可能发生了一些事情 所以我有一个由 cron 执行的 shell 脚本 基本上它是为了检查 Node js 是否正在运行 如果是这样 请记录日期 如果不是 则不记录任何内容 在我构建它时 我测试了它并看到它在节
  • Google Speech-to-text API,InvalidArgument:400 必须使用单通道(单声道)

    我不断收到此错误InvalidArgument 400在 google Speech to text 中 问题似乎是我使用 2 通道音频 立体声 并且 API 正在等待 单声道 中的 wav 如果我在音频编辑器中转换文件 它可能会起作用 但
  • Google 字体无法在 Safari 上运行

    我正在努力让我的网站在 Safari 和 Chrome 下看起来相同 在 Chrome 中 它看起来正是我想要的样子 主要问题是 Google Font 似乎无法在 Safari 下加载 因为我使用的是 Google Font 网站上给出的
  • 如何在 JavaFx 中设置 svgPath 的大小

    我有一个包含 ListCells 的 ListView 其中包含由 SvgPath 定义的图标 private class CustomCell extends ListCell
  • Perl 中的配置文件处理

    CPAN 上的 Config 命名空间中有很多模块 但它们都受到某种方式的限制 我目前正在使用配置 标准 http search cpan org perldoc Config Std 这在大多数情况下都很好 但是它使某些事情变得困难 超过
  • Laravel 5.6 存储链接已存在,但尝试从公共文件夹获取文件时出现 404 错误

    我使用以下命令创建了一个符号链接 php artisan storage link 然后我创建了一个文件storage app public 根据文档 我可以通过以下方式获取该文件的链接 asset storage file txt htm
  • 如何使用lxml创建文本节点?

    我使用 lxml 和 python 来操作 xml 文件 我想创建一个最好没有标签的文本节点 而不是创建一个新的Element然后向其附加文本 我怎样才能做到这一点 我可以在中找到与此等效的内容xml dom minidompython 的
  • Proguard 和 R8 有什么区别?

    新版本的 Android Studio 3 4 刚刚发布 默认支持 R8 而不是 Proguard 有人可以解释一下两者之间的主要区别以及使用 R8 的任何明显好处吗 Android 构建过程的历史不断变化 开发人员不断尝试使其在构建时间和
  • 如何强制 iOS 立即更改背景颜色?

    有什么方法可以立即更改窗口的背景颜色吗 我需要一个闪烁的背景 即红 绿以一秒的间隔闪烁 正如我所见 背景颜色不会立即改变 而是仅在功能保留时才改变 有没有办法强制系统立即更改它并重绘窗口背景 void viewDidLoad super v
  • @将较少文件导入到有限范围内

    我想从另一个 less 文件导入所有样式 但范围有限 我正在尝试这个 我的网站 less wrapper class import path to styles less 但这根本不起作用 我使用基于浏览器的 less js 选项 并且可以
  • php 全局修剪 $_post

    你能修剪所有 POST 变量吗 因为我现在有一个很长的清单来修剪每个变量 看起来很不专业 我认为修剪 POST 也许会起作用 但没有 你可以这样做array map http php net array map POST array map
  • 如何修复 Android Studio 中的 VectorDrawableCompat 配置错误?

    我在 Android studio 中创建了一个项目 即使不修改项目中的任何单个字符 我也无法运行它 它给出以下错误 java lang RuntimeException 无法启动活动 组件信息 com kk myapplication c
  • 交集完成后,数组中的顺序是否保留?

    当我对两个数组进行交集时 是否可以保证结果顺序基于第一个数组的顺序 例如 如果我有 a 1 2 3 b 3 2 1 could a b return 3 2 1 代替 1 2 3 这是我所期望的 我在 RDoc 或 Pickaxe 的 Ar
  • 如何以编程方式调用 maven-resources-plugin

    我正在编写一个自定义 Maven 插件 该插件的部分工作是过滤复制一些资源 我写的代码如下所示 CopyResourcesMojo rm new CopyResourcesMojo rm setOutputDirectory outputD
  • 如何查找 Linux 上 Java Desktop API 需要哪些库?

    我正在尝试找到一种方法来确定 Java 需要哪些库才能使 Desktop API 工作 特别是BROWSE功能 我读了一些指南 错误报告和解决方法 但它们都不起作用 我可以通过安装使其在 Debian 上运行libgnome2 0 and