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 目录