【问题标题】:Java Desktop browse() opens %u instead of URIJava Desktop browse() 打开 %u 而不是 URI
【发布时间】:2012-01-25 11:51:21
【问题描述】:

好吧,我猜标题已经说明了这一点。 当尝试使用桌面的 browse() 函数启动默认浏览器时,浏览器确实打开但指向错误的 URI beeing %u

我无法将其缩小到代码,因为我没有更改它。 我所做的更改是操作系统现在使用 Ubuntu 11.10 而不是 11.04

我安装了 Java 7,但继续使用 Java 6。

哪里出错了?有什么线索吗?

【问题讨论】:

  • “有任何线索吗?” 您是否打算通过发布SSCCE 来提供任何线索?或者我们应该只是猜测?
  • 在真正的“它适用于我的盒子”风格中,SCCE 在我的机器上运行良好 - Ubuntu 11.10。听起来正在调用以启动浏览器的命令不会替换 %u 参数。我认为这是用户桌面上的环境问题
  • 正如我所说,这不是代码问题,我没想过举个例子。我想我必须更深入地研究操作系统。 @Petesh 你知道在哪里设置这样的参数吗?或者问题可能来自哪里?
  • 不是你设置参数的情况。当您要求打开它调用gnome-open <uri> 的URI 时,您应该strace -v -f -o stracefile <pidofjava> 然后点击链接。这将为您提供execve 行,这些行指示正在调用哪些命令作为browse() 操作的一部分——其中一个可能包含%u,在这种情况下,问题在于调用它。很可能为browse 命令调用的命令不理解%u 语法(可能是旧脚本-pre gnome3/unity??)
  • 在 strace 中,我看到 firefox 正在呼叫,您是对的。 Firefox 以 %u 作为参数调用,而不是实际的 URI。没有看到对 gnome-open 的调用,但我猜 Ubuntu 为 Unity 开发了自己的文件处理程序。得看看那里有什么...

标签: java awt desktop


【解决方案1】:

我知道我玩游戏迟到了,但我也遇到了同样的问题。感谢这个问题中的所有好的提示以及上面的 cmets,我在 gconf-editor 中找到了一个配置键:

/desktop/gnome/url-handlers/http/command(和类似的)

我在这个键中找到的命令是“firefox %u”。不幸的是,密钥并没有很好地记录,但我注意到该区域中的其他密钥使用“%s”作为参数。所以我尝试将“%u”替换为“%s”,然后 - 耶! - 该死的东西又起作用了。

我还想借此机会感谢 Canonical 的人,他们如此彻底地搞砸了 Unity。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 2016-09-07
    • 1970-01-01
    • 2014-09-05
    • 1970-01-01
    相关资源
    最近更新 更多