问题描述
我以前从未使用过Mac,所以我对在Mac上运行Java应用程序的最佳方法有疑问,因为我并没有在网上找到好的答案。
因此,我已经构建了一个Java应用程序,并且必须将其发送到使用mac的客户端。
我知道您可以在终端上使用java -jar app.jar
在Mac上运行.jar
,但是我想要一个双击图标,客户端只能单击它并启动该程序。
我看过一些教程,其中有人制作了一个.jar
文件,您只需双击它即可在MacOS中启动该程序,所以我不确定是否可以通过双击在MacOS中将.jar
作为可执行文件运行?
我看到的另一个解决方案是制作一个简单的.command
文件,该文件将使用java -jar app.jar
运行该应用程序。
所以我想知道从.jar
文件中为Mac生成可执行文件的最佳方法是什么?
1楼
您的问题不是一个坏问题。
答案是“取决于”。 “最佳解决方案”完全有可能只是发送.jar文件及其调用说明。
请查看Oracle文档:
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,如以下示例所示: