【发布时间】: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”。关于如何以编程方式获得正确值的任何想法?
【问题讨论】:
-
感谢您提醒我这个问题,这让我发疯了
-
多么救命啊!自从我终于升级以来,一直让我发疯。您的问题本身就是一个答案。
-
查看我的更新,看看是否能帮到你
标签: java java-web-start macos-big-sur