千家信息网

JDK11+模块化项目打包的实现方法

发表于:2025-02-10 作者:千家信息网编辑
千家信息网最后更新 2025年02月10日,这篇文章主要介绍"JDK11+模块化项目打包的实现方法",在日常操作中,相信很多人在JDK11+模块化项目打包的实现方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"J
千家信息网最后更新 2025年02月10日JDK11+模块化项目打包的实现方法

这篇文章主要介绍"JDK11+模块化项目打包的实现方法",在日常操作中,相信很多人在JDK11+模块化项目打包的实现方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"JDK11+模块化项目打包的实现方法"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

JavaFx打包

开发环境

  • windows10

  • STS: 4.7.2.RELEASE(eclipse2.3.200.v20200604-0540)

  • OpenJDK11.0.9

  • MAVEN3.6.3

准备工作

创建maven项目

com.studyjfx-demo0.0.1-SNAPSHOT

编译配置

        org.apache.maven.plugins        maven-compiler-plugin        3.6.2                        11                11                UTF-8        

项目目录结构如下:

编码

启动类App.java

package com.study.jfx;import javafx.application.Application;import javafx.scene.Scene;import javafx.scene.control.Button;import javafx.scene.layout.StackPane;import javafx.stage.Stage;public class App extends Application {        public static void main(String[] args) {                launch(args);        }        @Override        public void start(@SuppressWarnings("exports") Stage primaryStage) throws Exception {                primaryStage.setTitle("wxCert");                primaryStage.show();                Button btn = new Button();                btn.setText("Say 'Hello World'");                btn.setOnAction(event -> {                        System.out.println("Hello World!");                });                StackPane root = new StackPane();                root.getChildren().add(btn);                Scene scene = new Scene(root, 300, 250);                primaryStage.setScene(scene);        }}

模块化文件

module com.study.jfx {        requires javafx.controls;        opens com.study.jfx to javafx.controls;        exports com.study.jfx;}

模块化配置的说明:

  1. 声明模块化项目的名称。

  2. 声明依赖的模块,不用重复声明javafx.base和javafx.graphics。

  3. 给javafx.controls开放本项目的类。

  4. 导出本项目类,启动项目需要。

maven的依赖库配置

                      org.openjfx           javafx-controls           11.0.2           

maven插件配置一:

                          org.apache.maven.plugins               maven-dependency-plugin               3.1.2                                                         copy-dependencies                       package                                                  ${basedir}/target/lib                           false                           false                           true                                                                         copy-dependencies                                                                                              org.apache.maven.plugins               maven-assembly-plugin               3.3.0                                  false                                          jar-with-dependencies                                                                                        com.study.jfx.App                                                                                                                  make-assembly                       package                                                  single                                                                    

JavaFx打可执行jar包

使用插件配置一,执行maven命令:clean package,会在target文件夹下生成如下目录:

cmd命令启动项目:

java --module-path lib --add-modules=javafx.controls,javafx.base,javafx.graphics -jar jfx-demo-0.0.1-SNAPSHOT.jar

JRE定制

maven插件配置二:

    org.openjfx    javafx-maven-plugin    0.0.5            com.study.jfx.App    

使用JavaFx提供的创建,执行maven命令clean javafx:jlink可以定制JRE。 当然,使用JDK自身提供的jdeps+jlink来定制更好。

说明

  • 这一配置可以直接通过执行main方法启动项目,不需要依赖javafx-maven-plugin的命令clean javafx:run来启动项目。

  • 先用OpenJDK15使用此配置打包也成功了。

  • 不知道为什么我在一个IDE里面使用第二个JavaFx环境(单独的工作空间)会出JVM依赖库不匹配的异常。

  • 插件版本降低也能成功打包运行。

到此,关于"JDK11+模块化项目打包的实现方法"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

0