Java 17 和 JavaFX 打包指南
在这篇文章中,我们将学习如何使用 Java 17 和 JavaFX 打包应用程序的大小。整个过程相对简单,适合新手入门。通过本教程,您将掌握以下步骤:
流程概览
下面是实现 JavaFX 应用程序打包的步骤:
步骤 | 描述 |
---|---|
步骤 1 | 安装必要的开发环境 |
步骤 2 | 创建 JavaFX 项目 |
步骤 3 | 编写并测试您的 JavaFX 应用程序 |
步骤 4 | 使用 Maven 或 Gradle 配置项目打包 |
步骤 5 | 运行打包命令并检查输出文件 |
步骤 6 | 优化应用程序的打包大小 |
步骤详细说明
步骤 1:安装必要的开发环境
确保您已经安装以下工具:
- Java 17 JDK:下载并安装 Java 17 的 JDK。
- IDE:建议使用 IntelliJ IDEA 或 Eclipse。
- Maven 或 Gradle:用于依赖管理和打包的工具。
步骤 2:创建 JavaFX 项目
使用 Maven 创建一个新的 JavaFX 项目。首先,创建一个新的文件夹并在命令行中打开。
mvn archetype:generate -DgroupId=com.example -DartifactId=javafx-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
mvn archetype:generate
:使用 Maven 创建新的项目。-DgroupId=com.example
:定义项目的组 ID。-DartifactId=javafx-app
:定义项目的工件 ID。-DarchetypeArtifactId=maven-archetype-quickstart
:选择 Maven 的架构模板。-DinteractiveMode=false
:非交互模式,快速创建项目。
步骤 3:编写并测试您的 JavaFX 应用程序
在 src/main/java/com/example
目录下创建一个 Main.java
文件,并编写简单的 JavaFX 代码:
package com.example;
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage primaryStage) {
// 创建一个标签
Label label = new Label("Hello, JavaFX!");
// 创建一个场景并设置场景大小
Group root = new Group();
root.getChildren().add(label);
Scene scene = new Scene(root, 300, 200);
// 设置舞台的标题和场景
primaryStage.setTitle("JavaFX Example");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
- 上述代码创建了一个简单的 JavaFX 应用程序,显示一个窗口,窗口内有一条标签文本。
步骤 4:使用 Maven 或 Gradle 配置项目打包
我们将在 pom.xml
文件中添加 JavaFX 依赖项。在 pom.xml
中,添加以下内容:
<dependencies>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<version>17.0.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.3.0</version>
<configuration>
<archive>
<manifest>
<mainClass>com.example.Main</mainClass> <!-- 指定主类 -->
</manifest>
</archive>
<finalName>javafx-app</finalName> <!-- 输出文件名 -->
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
- 上述内容添加了 JavaFX 控件库的依赖,并配置 Maven 进行打包。
步骤 5:运行打包命令并检查输出文件
在命令行中,执行以下命令进行打包:
mvn clean package
- 该命令将清理之前的输出并重新打包项目。
步骤 6:优化应用程序的打包大小
为了更小的打包文件,您可以使用 jlink
工具,它是 JDK 提供的一个工具,用于创建自包含的 Java 运行时。
jlink --module-path $JAVA_HOME/jmods:target/javafx-app-1.0-SNAPSHOT.jar --add-modules javafx.controls --output myapp --launcher myapp=myapp/com.example.Main
jlink
:创建自包含的 Java 运行时。--module-path
:指定模块路径。--add-modules
:指定要添加的模块。--output
:输出目录。
数据可视化
使用饼状图展示打包大小占比
pie
title 打包大小占比
"JavaFX 库": 30
"应用程序代码": 50
"未使用库": 20
使用序列图展示打包工作流程
sequenceDiagram
participant User
participant Maven
participant Jlink
User->>Maven: 执行 mvn clean package
Maven->>User: 打包完成
User->>Jlink: 执行 jlink
Jlink->>User: 输出自包含的运行时
结论
通过上述步骤,我们成功地创建了一个简单的 JavaFX 应用程序并进行了打包。加上对打包大小的优化,通过使用 jlink
生成自包含的运行时,您已经掌握了 JavaFX 应用程序打包的基本技术。这为您将来的开发打下了坚实的基础,期待您在 JavaFX 领域取得更多成就!