Mac OS X Big Sur 上 webstart 的 JDialog 全屏问题

Posted

技术标签:

【中文标题】Mac OS X Big Sur 上 webstart 的 JDialog 全屏问题【英文标题】:JDialog fullscreen problem with webstart on Mac OS X Big Sur 【发布时间】:2021-04-03 04:30:03 【问题描述】:

Mac OS X 11 (Big Sur) 中新的“首选选项卡”系统设置会导致 Java 应用程序出现问题。如果设置设置为“始终”或“全屏”并且应用程序以全屏模式运行,则 JDialogs 将作为选项卡打开并且无响应。

有一种方法可以在每个应用程序的基础上设置“首选标签”设置。例如,运行

defaults write net.java.openjdk.cmd AppleWindowTabbingMode manual

在终端中确保 NetBeans(以及看似在 openjdk 上运行的任何应用程序)正常工作。

我们的应用程序仍然支持 Mac 上的 Webstart。上面的设置不影响Webstart,所以问题还是出现在那里。我不确定上述命令中的“net.java.openjdk.cmd”来自哪里,以及在哪里可以找到 Webstart 的等效值。它似乎不在 Info.plist 中。有谁知道 Webstart (build 1.8.0_271-b09) 的值应该是多少?一般来说,我如何才能找到适合特定应用的值?

[编辑 2021 年 3 月 25 日] 为了尽量减少用户的负担,我的方法是使用我们软件中的“defaults read X AppleWindowTabbingMode”读取当前设置。如果未设置为手动,则软件提供运行“默认写入 X AppleWindowTabbingMode 手动”并建议用户事后需要重新启动软件。

为了以编程方式获取捆绑 ID,我尝试了:

URL u = Main.class.getProtectionDomain().getCodeSource().getLocation().toURI().toURL();
URL canonicalHome = new URL(u.toString() + "jnlp");
appID = "com.oracle.jnlp-" + canonicalHome.hashCode();

但这似乎并没有让我得到正确的价值。据我所知,webstart 实际上使用了一个叫做 JavaAppletPlugin 的东西,它使用了一个“java”可执行文件,而不是“javaws”。关于如何以编程方式获得正确值的任何想法?

【问题讨论】:

感谢您提醒我这个问题,这让我发疯了 多么救命啊!自从我终于升级以来,一直让我发疯。您的问题本身就是一个答案。 查看我的更新,看看是否能帮到你 【参考方案1】:

希望这对你仍然有用。

您需要的是应用的捆绑标识符。 对于openjdk,这是:

<dict>
    <key>CFBundleIdentifier</key>
    <string>net.java.openjdk.cmd</string>
...

我的猜测是 Webstart 应用程序正在使用 Oracle JVM 中的 javaws。 在这种情况下,捆绑标识符是一个连接(来自 java 源代码):

this.bundleIdentifier = "com.oracle.jnlp-" + paramLaunchDesc.getCanonicalHome().hashCode();

您应该尝试为您的应用创建一个快捷方式,该快捷方式应包含 plist 格式的捆绑信息。获取标识符。 然后您的终端命令将变为:

defaults write com.oracle.jnlp-<something> AppleWindowTabbingMode manual

更新

您也许可以使用 Java 控制台找到标识符。在您可以通过系统偏好设置访问的 Java 控制面板中启用它。

在控制台中,查找如下日志消息:

temp: bundleIdentifier is com.oracle.jnlp--<number>

显然,每次安装可能会有所不同 :-( 所以您仍然需要确切了解 java 是如何创建标识符的。

【讨论】:

以上是关于Mac OS X Big Sur 上 webstart 的 JDialog 全屏问题的主要内容,如果未能解决你的问题,请参考以下文章

在 Mac OS Big Sur 11.0.1 上使用 anaconda 安装 Torch 时出现 PackagesNotFoundError

Android Studio Emulator : Unhandled exit 1d (Mac OS : Big Sur Beta)

我的鱼瞎了? (在 Mac OS Big Sur、M1 Mac 上将其设置为默认 shell 后,fish 无法识别任何命令)

如何在 Mac OS Big Sur 中更改 xampp htdocs 目录

VMware16 如何安装 Mac OS Big Sur 11.0.1虚拟机

有没有关于 PyQt 库在 Mac OS Big Sur 中不起作用的解决方案?