我以前从未使用过Mac,所以我对在Mac上运行Java应用程序的最佳方法有疑问,因为我并没有在网上找到好的答案。
因此,我已经构建了一个Java应用程序,并且必须将其发送到使用mac的客户端。我知道您可以在终端上使用.jar
在Mac上运行java -jar app.jar
,但是我想要一个双击图标,客户端只能单击该图标并启动程序。
我看过一些教程,其中有人制作了一个.jar
文件,您只需双击即可在MacOS中启动该程序,因此我不确定是否可以在MacOS中运行.jar
只需双击即可将其作为可执行文件?
我看到的另一个解决方案是制作一个简单的.command
文件,该文件将使用java -jar app.jar
运行该应用程序。因此,我想知道从.jar
文件为Mac生成可执行文件的最佳方法是什么?
答案 0 :(得分:2)
您的问题不是坏。
答案是“取决于”。 “最佳解决方案”完全有可能只是向.jar文件发送带有调用说明的文件。
请查看Oracle文档:
Java Documentation Section 7: Self-Contained Application Packaging
7.1简介
Java打包工具提供对多种格式的内置支持 自包含的应用程序包。基本套餐是单 硬盘驱动器上的文件夹,其中包含所有应用程序资源和 JRE。您可以按原样重新分发该软件包,也可以构建一个 可安装的程序包(例如EXE或DMG格式。)
从过程的角度来看,生成一个独立的应用程序 包类似于生成基本应用程序包,因为 在第5章“打包基础”中讨论了以下内容 差异:
必须通过将其他参数传递给Ant任务来显式地请求自包含的应用程序包,或者 javapackager工具。
必须满足操作系统和工具要求,才能构建特定格式的软件包。
只能使用JDK 7 Update 6或更高版本来构建自包含的应用程序包。
虽然创建基本的独立应用程序包很容易, 量身定制以实现特定用户的最佳用户体验 分发方法通常需要一些努力和更深入的研究 对主题的理解。
...
7.3.5.1 OS X
在OS X上生成的软件包是“应用程序捆绑包”。
几个配置参数位于以下位置的Info.plist文件中 该应用程序捆绑包,并且必须符合以下规则:
应用程序ID(如果未指定ID,则为主类名称)用作CFBundleIdentifier。
应用程序版本用作CFBundleShortVersionString。
OS X 10.8引入了Gatekeeper,它可以防止执行不受信任的事件 代码,默认情况下,无论此代码是否在 Objective-C或Java。
用户可以手动启用应用程序运行,但这不是 完美的用户体验。为了获得最佳的用户体验,请获取 Apple提供的开发人员ID证书。 Mac捆绑软件使用 证书以签署.app文件夹。如果您的本地用户信息 与证书名称不同,您可能需要设置 捆绑参数mac.signing-key-user-name,如下所示 例如: