mac的Java应用程序

问题描述 投票:0回答:1

我之前从未使用过mac,所以我对在Mac上运行java应用程序的最佳方式有疑问,因为我在网上找不到一个好的答案。

所以我构建了一个java应用程序,我必须将它发送到使用mac的客户端。我知道你可以使用终端上的.jar在mac上运行java -jar app.jar,但是我想要一个双击图标,客户端只能点击它并启动程序。

我已经看过一些教程,其中有人制作了一个你只需双击的.jar文件,程序就是用macos开始的,所以我不确定你是否可以通过双击它在macos中运行.jar作为可执行文件?

我看到的另一个解决方案是制作一个简单的.command文件,该文件将使用java -jar app.jar运行应用程序。所以我想知道从.jar文件制作mac可执行文件的最佳方法是什么?

java macos jar
1个回答
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文件夹进行签名。如果您的本地用户信息与证书名称不同,则可能需要设置bundle参数mac.signing-key-user-name,如以下示例所示:

© www.soinside.com 2019 - 2024. All rights reserved.