面试知识点总结
1. 一篇文章说清 netty 的线程模型 2. 一篇说尽 java 线程池 3. 一篇就够了系列 - LinkedHashMap 4. 使用LinkedHashMap构建LRU的Cache 5. 并发编程之-Excutor框架 6. Java工具类提供的排序功能 7. Java的众多log库都是什么关系? 8. Java常用日志框架历史 9. 网页特殊符号(HTML字符实体)大全 10. JavaFX项目打包为独立的macOS应用程序和dmg文件 11. Java 11 支持的 基于 HTTP/2 的响应式请求 12. Java 11 中 HttpClient 的使用(HTTP/2协议) 13. Java 11 模块化入门教程 14. 五五面试网-带你 理解 java 模块系统 (一) 15. 五五面试网-带你 理解 java 模块系统 (二) 16. 五五面试网-带你 理解 java 模块系统 (三) 手动新建一个java模块 17. Java中的TreeMap 18. gradle:现代高效的java构建工具 19. Spring + MyBatis 框架下处理数据库异常 20. 通过开源项目,免费获取Idea的开源授权 21. IntelliJ IDEA 2020最新激活码(亲测有效,可激活至 2089 年)

JavaFX项目打包为独立的macOS应用程序和dmg文件

在本教程中,我们将创建app或dmg文件,它可以在macOS系统上运行,而macOS系统不需要安装JRE或JDK。我们将使用IntelliJ和maven,但它仍然可以提供使用gradle或Eclipse或其他变体的方法。

提前准备:

  • IntelliJ
  • Java 14 (JAVA_HOME)
  • JavaFX 14 (PATH_TO_FX)

 

如果您没有上述设置,请相应地设置您的系统和环境变量。。

openjfx.io 已经有了一个很好的“开始”页码:https://openjfx.io/openjfx-docs/

我们将执行类似的操作,但我将使用Java14而不是Java12。你仍然可以使用v12,它应该可以工作。

第一步: 创建一个新项目,并在左侧菜单上选择Maven(您可能会想单击JavaFX,但我们希望使用Maven作为编排器)。为了将JavaFX库添加到这个项目中,我们将使用archetype。使用以下值作为原型:

 

KEY VALUE
GroupId org.openjfx
ArtifactId javafx-maven-archetypes
Version 0.0.1

添加后,将在列表中选择原型。在不更改此选择的情况下,单击next和GroupId和ArtifactId。

第二步:在下一个窗口中,将archetype ArtifactId更改为“javafx-archetype-fxml”。

我们需要它来为我们的windows/views使用xml文件。这类似于Android中的xml文件布局。单击next并完成从archetype创建新项目。

第三步:修改javafx-maven-plugin插件的版本号为 0.0.4,然后可以在 Maven Projects 面板中 (View > Tool Windows > Maven Projects) 可以看到选项 

javafx:jlink
javafx:run 

现在在控制台中键入以下命令:

mvn clean install
mvn javafx:run

模板中的基本GUI应用程序将运行。

 

现在我们要创建一个独立的应用程序文件

首先,让我们创建必要的文件:

mvn javafx:jlink

这将为src创建一个名为target的同级文件夹。在target/image中,我们有在任何mac机器上运行这个应用程序所需的所有文件。目标macOS机器不需要安装JRE或JDK。这是苹果对你发布应用到应用商店的要求之一。应用程序不应要求安装单独的应用程序或框架。

转到终端中的target/image文件夹并键入以下内容,执行后,应用正常启动

./bin/java -m YOUR_GROUPID/YOUR_MAIN_CLASS
# for me it was like below:
# ./bin/java -m com.nduowang.javafx/com.nduowang.javafx.PostGirl

并查看应用程序是否正在运行。

现在如何将其转换为扩展名为.app的单个文件?我们将使用一个小工具:

应用

Appify是一个小型bash脚本,用于将此捆绑包转换为单个文件。

复制此内容并粘贴到名为appify的文件中。

 

#!/bin/bash

if [ "$1" = "-h" -o "$1" = "--help" -o -z "$1" ]; then cat <<EOF
appify v3.0.1 for Mac OS X - http://mths.be/appify
Creates the simplest possible Mac app from a shell script.
Appify takes a shell script as its first argument:
    `basename "$0"` my-script.sh
Note that you cannot rename appified apps. If you want to give your app
a custom name, use the second argument:
    `basename "$0"` my-script.sh "My App"
Copyright (c) Thomas Aylott <http://subtlegradient.com/>
Modified by Mathias Bynens <http://mathiasbynens.be/>
EOF
exit; fi

APPNAME=${2:-$(basename "$1" ".sh")}
DIR="$APPNAME.app/Contents/MacOS"

if [ -a "$APPNAME.app" ]; then
    echo "$PWD/$APPNAME.app already exists :("
    exit 1
fi

mkdir -p "$DIR"
cp "$1" "$DIR/$APPNAME"
chmod +x "$DIR/$APPNAME"

echo "$PWD/$APPNAME.app"

 

您需要使用    chmod +x appify  使该文件可执行。最好还需要将其位置添加到PATH环境变量中。

现在创建一个名为   run.command (文件名不重要,但我们需要记住该文件名以便以后使用)并应用  chmod+x run.command  命令并将其放在target/image文件夹下。


#!/bin/bash

cd -- "$(dirname -- "$BASH_SOURCE")"

cd bin

./java -m com.nduowang.javafx/com.nduowang.javafx.PostGirl

exit 0

 

现在运行以下命令创建应用程序包:


appify run.command MyJavaFXApp

在这一步之后,你不能更改你的应用程序名称,所以现在选择你喜欢的名称。或者你可以一直重复这个步骤。如果您双击此应用程序,它将不会运行。然而。

现在复制此旁边的所有文件和文件夹 MyJavaFXApp.app 文件。然后右键单击 MyJavaFXApp.app ,然后单击Show package contents;并将所有文件粘贴到Contents/MacOS/文件夹中。现在您可以双击应用程序文件,并看到它仍然按预期运行。

 

如何从应用程序文件创建dmg文件?

这是最简单的部分:

  • 创建新文件夹并放置 MyJavaFXApp.app 投入其中
  • 打开磁盘实用程序,然后单击“文件”>“新建图像”>“来自文件夹的图像”
  • 选择您在步骤1中创建的文件夹
  • 键入dmg文件名并将其保存到磁盘。
  • 现在你有了一个包含app文件的dmg文件。
  • 分发给你的朋友们
  • 当然,如果你想把这个应用发布到appstore,苹果会对你有更多的要求,但这一步绝对是最重要的一步。