1. Config JDK variable path.
# export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre
2.Create resource path.
We could export logo.png from jar file use "jar xvf recaf.jar" command.
Use online convert at https://cloudconvert.com/,upload your png file,convert it to icns and download it.
# mkdir package/macosx
# cp logo.icns package/macosx/Recaf.icns
3. Use javapackager to setup a dmg pack.
# javapackager -deploy -native dmg -srcfiles recaf.jar -appclass recaf -name Recaf -outdir deploy -outfile Recaf -v
It taken a error like below:
utdir deploy -outfile Recaf -v
没有基础 JDK。程序包将使用系统 JRE。
The jar recaf.jar has a main class me.coley.recaf.Recaf that does not match the declared main recaf
没有基础 JDK。程序包将使用系统 JRE。
The jar recaf.jar has a main class me.coley.recaf.Recaf that does not match the declared main recaf
The jar recaf.jar has a main class me.coley.recaf.Recaf that does not match the declared main recaf
由于配置问题, 跳过了打包程序DMG Installer: Main application jar is missing.
修复建议: Make sure to use fx:jar task to create main application jar.
Change the command to:
# javapackager -deploy -native dmg -srcfiles recaf.jar -appclass me.coley.recaf.Recaf -name Recaf -outdir deploy -outfile Recaf -v
Reference:Usage for javapackager
用法: javapackager -command [-options] 其中 command 为以下项之一: -createjar 打包程序根据其他参数生成 jar 档案。 -deploy 打包程序根据其他参数生成 jnlp 和 html 文件。 -createbss 将 css 文件转换为二进制形式 -signJar 使用提供的证书为 jar 文件签名。 -makeall 将 compilation, createjar 和 deploy 步骤作为一个调用执行, 在其中预定义大多数参数。源必须位于 "src" 文件夹中, 生成的文件 (jar, jnlp, html) 将放入 "dist" 文件夹中。此命令只能以最简单方式配置, 并且 尽可能自动进行。 createjar 命令的选项包括: -appclass <application class> 要执行的应用程序类的限定名称。 -preloader <preloader class> 要执行的预加载器类的限定名称。 -paramfile <file> 包含默认命名应用程序参数的属性文件。 -argument arg JNLP 文件的 <fx:argument> 元素中要放入的未命名 参数。 -classpath <files> 相关 jar 文件名列表。 -manifestAttrs <manifest attributes> 附加清单属性列表。语法: "name1=value1, name2=value2,name3=value3"。 -noembedlauncher 如果存在, 打包程序将不会向 jarfile 添加 JavaFX 启动程序类。 -nocss2bin 在复制到 jar 之前, 打包程序不会将 CSS 文件转换为 二进制形式。 -runtimeversion <version> 所需 JavaFX 运行时的版本。 -outdir <dir> 要将输出文件生成到的目录的名称。 -outfile <filename> 生成的文件的名称 (不带扩展名)。 -srcdir <dir> 待打包文件的基目录。 -srcfiles <files> srcdir 中的文件的列表。如果省略, 将对 srcdir (在 这种情况下是必需的参数) 中的所有文件进行打包。 deploy 命令的选项包括: -title <title> 应用程序的标题。 -vendor <vendor> 应用程序的供应商。 -description <description> 应用程序的说明。 -appclass <application class> 要执行的应用程序类的限定名称。 -preloader <preloader class> 要执行的预加载器类的限定名称。 -paramfile <file> 包含默认命名应用程序参数的属性文件。 -htmlparamfile <file> 包含所生成小应用程序参数的属性文件。 -width <width> 应用程序的宽度。 -height <height> 应用程序的高度。 -native <type> 生成自包含的应用程序包 (如果可能)。 如果指定了类型, 则只创建此类型的包。 所支持类型的列表包括: installer, image, exe, msi, dmg, rpm 和 deb。 -name <name> 应用程序的名称。 -embedjnlp 如果存在, 会将 jnlp 文件嵌入 html 文档中。 -embedCertificates 如果存在, 会将证书嵌入 jnlp 文件中。 -allpermissions 如果存在, 应用程序将需要 jnlp 文件中的所有 安全权限。 -updatemode <updatemode> 设置 jnlp 文件的更新模式。 -isExtension 如果存在, srcfile 将被视为扩展。 -callbacks 在生成的 HTML 中指定用户回调方法。格式为 "name1:value1,name2:value2,..." -templateInFilename html 模板文件的名称。占位符格式为 #XXXX.YYYY(APPID)# -templateOutFilename 要将已填充的模板写入到的 html 文件的名称。 -templateId 用于模板处理的应用程序的应用程序 ID。 -argument arg JNLP 文件的 <fx:argument> 元素中要放入的未命名 参数。 -outdir <dir> 要将输出文件生成到的目录的名称。 -outfile <filename> 生成的文件的名称 (不带扩展名)。 -srcdir <dir> 待打包文件的基目录。 -srcfiles <files> srcdir 中的文件的列表。如果省略, 将对 srcdir (在 这种情况下是必需的参数) 中的所有文件进行打包。 createbss 命令的选项包括: -outdir <dir> 要将输出文件生成到的目录的名称。 -srcdir <dir> 待打包文件的基目录。 -srcfiles <files> srcdir 中的文件的列表。如果省略, 将对 srcdir (在 这种情况下是必需的参数) 中的所有文件进行打包。 signJar 命令的选项包括: -keyStore <file> 密钥库文件名。 -alias 密钥的别名。 -storePass 用于检查密钥库完整性或对密钥库取消锁定的口令。 -keyPass 用于恢复密钥的口令。 -storeType 密钥库类型, 默认值为 "jks"。 -outdir <dir> 要将输出文件生成到的目录的名称。 -srcdir <dir> 待签名文件的基目录。 -srcfiles <files> srcdir 中的文件的列表。如果省略, 将对 srcdir (在 这种情况下是必需的参数) 中的所有文件进行打包。 makeAll 命令的选项包括: -appclass <application class> 要执行的应用程序类的限定名称。 -preloader <preloader class> 要执行的预加载器类的限定名称。 -classpath <files> 相关 jar 文件名列表。 -name <name> 应用程序的名称。 -width <width> 应用程序的宽度。 -height <height> 应用程序的高度。 -v 启用详细输出。 示例用法: -------------- javapackager -createjar -appclass package.ClassName -srcdir classes -outdir out -outfile outjar -v 将类目录的内容打包到 outjar.jar, 将应用程序类设置为 package.ClassName。 javapackager -deploy -outdir outdir -outfile outfile -width 34 -height 43 -name AppName -appclass package.ClassName -v -srcdir compiled 在由 package.ClassName 类启动且大小为 34x43 的 应用程序 AppName 的 outdir 中生成 outfile.jnlp 和对应的 outfile.html 文件。 javapackager -makeall -appclass brickbreaker.Main -name BrickBreaker -width 600 -height 600 此命令执行包含编译在内的所有打包工作: compile, createjar 和 deploy。