我看到新的 Desktop 类(我想将其用于它的 browse(uri) 方法)包括检查以验证它是否受支持。如果我要为多个操作系统分发我的应用程序,我是否应该期望它有时会不受支持,并坚持使用像“Bare Bones Browser Launch”这样的代码作为后备方法,还是这种情况非常罕见?我可能会遇到问题的任何特定操作系统?
(我正在为 Mac/Win/Solaris/Linux 分发,但如果您对它们有所了解,请随时回答任何特殊的操作系统。)
我看到新的 Desktop 类(我想将其用于它的 browse(uri) 方法)包括检查以验证它是否受支持。如果我要为多个操作系统分发我的应用程序,我是否应该期望它有时会不受支持,并坚持使用像“Bare Bones Browser Launch”这样的代码作为后备方法,还是这种情况非常罕见?我可能会遇到问题的任何特定操作系统?
(我正在为 Mac/Win/Solaris/Linux 分发,但如果您对它们有所了解,请随时回答任何特殊的操作系统。)
你应该防御性地编程。
从如何与桌面类集成:
使用 isDesktopSupported() 方法来确定桌面 API 是否可用。在 Solaris 操作系统和 Linux 平台上,此 API 依赖于 Gnome 库。如果这些库不可用,此方法将返回 false
(强调我的)
我认为重点是相反的,Java 需要操作系统来支持什么?他们通过允许 JVM 实现者只返回 false,说它不受支持,然后继续前进,并且仍然 100% 兼容 Java(无论这是否是“一次编写,随处运行”,我都会留给您自己的评估)。
像 Bare Bones Browser Launch 这样的技术或者像BrowserLauncher这样更复杂的库,总是只能在有限的操作系统和浏览器上工作,而不是为通用 Java 标准编写的通用代码将提供给您。
所以结果是,如果您专门针对的操作系统不支持 Desktop.openURL,请使用像 Bare Bones 启动器这样的技术,但是您必须编写它以专门在该操作系统上工作 - 没有理由认为该技术适用于给定的操作系统和该操作系统上的给定 JVM,它只是代表我们过去在 Java 6 之前启动浏览器所必须做的事情。