gpt4 book ai didi

java - 用于 Java 的 MacOS X 私有(private) API 中的“秘诀” - 请求更多详细信息

转载 作者:行者123 更新时间:2023-12-04 06:38:18 28 4
gpt4 key购买 nike

Scott Kovatch 在他的博客上写道:

Without getting into too much detail, typing ‘java MyAWTCode’ from a Terminal window violates a whole lot of assumptions about what an application is on Mac OS X, and needs a lot of cooperation between the AWT and the Process Manager to sort it out. http://skovatch.wordpress.com/2011/01/03/secret-smoke-screens/



出于好奇-违反了哪些假设?当然,这只是带有回调的 API 调用的候选者吗?

最佳答案

当然,我可以详细说明一下。

进程管理器首先假设所有在 Mac OS X 上呈现 UI 的应用程序都捆绑在一起,打包在名为 Application.app 的文件夹中,二进制文件在 Contents/MacOS/Application 中,最重要的是,有一个 Info.plist 可以获取诸如将显示在应用程序菜单中的应用程序名称之类的东西。当您从命令行(Swing 或 SWT)运行 Java 应用程序时,没有 Info.plist,因此我们必须创建一个 CFDictionary 以传递给将注册应用程序的私有(private) SPI,在Dock - 而不仅仅是'java' - 并且可以强制退出。

即使这样,它也不是完美的,因为 Dock 还假设它可以在您右键单击并选择 Keep In Dock 时为捆绑的应用程序存储一个别名,但因为没有一个静默失败。没有办法像 Windows 那样存储快捷方式或命令行来启动应用程序。

SWT 只调用 TransformProcessType,这是一个开始,但还远远不足以将 Java 应用程序转变为完整的 UI 应用程序。对于进行纯粹的 SWT 测试和开发,这足以让您继续前进。当您为部署创建一个基于 Eclipse RCP 的应用程序时,您最终会得到一个包含 Eclipse 启动器、插件和特性的捆绑应用程序,您就可以开始使用了。

当然,如果你加倍努力将你的 Java 应用程序打包成一个包,这一切都没有实际意义,但是来自其他平台的绝大多数开发人员并不费心,只想运行一个可执行的 JAR 文件甚至是一个文件夹带有 shell 脚本的类文件。

关于java - 用于 Java 的 MacOS X 私有(private) API 中的“秘诀” - 请求更多详细信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4602427/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com