-deploy \ # Assembles the application package for redistribution with sys JRE
-native image \ # Build a .app file. If you want a .dmg, use -native dmg
-srcdir ./csv-encrypt-tool-mac \ # directory where my jar and resource files in
-srcfiles csv-encrypt-tool.jar \ # my executable jar, path relative to -srcdir
-srcfiles dict \ # one of my resource directories, path relative to -srcdir
-srcfiles config \ # another one of my resource directories, path relative to -srcdir
-srcfiles log \ # again, one of my resource directories, path relative to -srcdir
-outdir ./dist \ # where I want the package to be put
-outfile csv-encrypt-tool \ # the output file name without extension, the final file (or bundle which is a directory actually) will be csv-encrypt-tool.app
-appclass some.package.CsvEncToolApp \ # the class with main method, which is the entry point of the whole app
-name "csv-encrypt-tool" \ # the name (not very sure what this is for)
-title "csv-encrypt-tool" \ # the title (not sure what it is either)
-nosign \ # not sign the app since this is just an internal tool, if you want to publish it, signing is necessary
-v \ # verbose
-BjvmOptions=-Xmx4096m \ # I need 4GB max heap size
-BmainJar=csv-encrypt-tool.jar \ # the jar file with main class
-Bicon=icon.icns # the icon
所以这些选项对我都不起作用(也许是因为我运行的是OS X 10. 15,也许是因为这些项目大多数都已经有几年的历史了,谁知道呢)。安装 Catalina 使我围绕Java应用程序构建的现有应用程序不再起作用。 Ultimately, this post helped:只需使用Automator运行一个脚本,该脚本运行java命令来启动jar。我想创建一个应用程序来启动Colossus, a Java version of the old Avalon Hill board game Titan。我编写了一个shell脚本,如下所示:java -Xmx256m -jar /my/path/to/the/game/Colossus.jar net.sf.colossus.appmain.Start,然后创建了一个automator应用程序,它的唯一动作是“运行Shell脚本”,启动该脚本。工作起来很有魅力,不需要安装Ant,没有命令行应用程序需要你下载java vms,最好的是它使用苹果工具,所以将与较新版本的OSX一起工作。
8条答案
按热度按时间2ledvvac1#
使用Apple Java扩展及其指南
Apple Java Extensions包含非常完整的开发指南,其中包含有关在Mac OS X上部署Java应用程序和制作应用程序捆绑包的信息。它还介绍了Apple Java Extensions的其他方面,如支持与标准Mac OS X UI集成。
其他参考:
zujrkrfu2#
有一个库可用于打包Java应用程序
Package:https://github.com/libgdx/packr
打包JAR、资源和JVM以在Windows(ZIP)、Linux(ZIP)和Mac OS X(.app)上分发,添加本机可执行文件以使其看起来像是本机应用程序。
它甚至可以为您最小化JRE。
vmpqdwk33#
Packr是一个很棒的工具,但是当时我发现我想要一些“更容易使用”的东西,所以jar2app就诞生了。我知道这是一个老问题,但是也许其他人会发现这个程序比其他替代品更容易使用。如果他们不这样做,在FAQ中有一个直接的参考,可以找到其他替代品(比如Packr)。
zbwhf8kr4#
您可以使用javapackager工具构建应用程序并将其打包到安装程序中,以下命令显示了如何将jar文件转换为包文件:
命令数
要更改应用程序图标和更多信息MacJava。
enxuqcxy5#
截至JDK 14,还有**
📦 jpackage
**(JEP-392),目前已从孵化阶段升级为生产就绪功能。使用swt app的示例用法(假设所有必需的jar文件都位于
files
文件夹中;您还可以使用--resource-dir
)提供自定义资源文件夹:有关完整的选项列表,请用途:
警告:这是否是一个bug可能还存在争议,可能会在未来的版本中得到解决,但在当前版本中,如果您将输入文件夹指定为
-i .
,并且没有为--dest
提供自定义目标,那么jpackage将在当前文件夹中捆绑 * 所有内容 *...包括它刚刚创建的捆绑包。也就是说,当 *.
既是输入文件夹 * 又是输出文件夹 * 时,它在自身上递归:D。szqfcxe26#
由于一些链接在接受的答案是不再可用或适合在2020年,8年的问题被问到,我想分享我的发现,我确认今天的工作。
有一个工具,
javapackager
,与java一起提供,可以为您打包在Windows,Linux,macOS上的java应用程序。以下是官方手册:https://docs.oracle.com/javase/8/docs/technotes/tools/unix/javapackager.html
(Also这里还有其他有用的工具:(x、x、e、f、x)
为了打包一个mac应用程序,我使用了以下命令:
这就是解释:
命令执行后,在
dist
中会创建一些文件和目录,我希望包在那里,其中一个目录是bundles
。应用程序放在那里。由于我刚刚构建了一个内部工具,没有其他生产就绪选项,不需要签名和打包,你可以参考官方手册获得帮助。
希望这能帮助那些不知道如何在2020年的macOS上打包应用程序的人,就像我一样。
at0kjp5o7#
所以这些选项对我都不起作用(也许是因为我运行的是OS X 10. 15,也许是因为这些项目大多数都已经有几年的历史了,谁知道呢)。安装 Catalina 使我围绕Java应用程序构建的现有应用程序不再起作用。
Ultimately, this post helped:只需使用Automator运行一个脚本,该脚本运行java命令来启动jar。我想创建一个应用程序来启动Colossus, a Java version of the old Avalon Hill board game Titan。我编写了一个shell脚本,如下所示:
java -Xmx256m -jar /my/path/to/the/game/Colossus.jar net.sf.colossus.appmain.Start
,然后创建了一个automator应用程序,它的唯一动作是“运行Shell脚本”,启动该脚本。工作起来很有魅力,不需要安装Ant,没有命令行应用程序需要你下载java vms,最好的是它使用苹果工具,所以将与较新版本的OSX一起工作。8iwquhpp8#
你可以试试这个应用程序,它捆绑你的jar文件到Mac应用程序
编辑:很容易使用,选择Jar文件和一个图标。在这里你可以看到screen shoot.
https://github.com/aprsn/Mac-App-Creator