Idea+maven-jar-plugin构建JavaFX可执行jar包

简介: Idea+maven-jar-plugin构建JavaFX可执行jar包

项目结构

.
├── pom.xml
└── src
    ├── main
    │   ├── java
    │   │   └── com
    │   │       └── pengshiyu
    │   │           ├── Controller.java
    │   │           └── Main.java
    │   └── resources
    │       ├── fxml
    │       │   └── sample.fxml
    │       └── style
    │           └── main.css
    └── test
        └── java

pom.xml

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0";
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>org.example</groupId>
<artifactId>demo</artifactId>
<version>1.0-SNAPSHOT</version>
<build>

<plugins>
<!-- 运行javaFX-->
<plugin>
<groupId>com.zenjava</groupId>
<artifactId>javafx-maven-plugin</artifactId>
<version>8.8.3</version>
<configuration>
<mainClass>com.pengshiyu.Main</mainClass>
</configuration>
</plugin>

<!-- 构建javaFX成jar-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.1.1</version>
<configuration>
<archive>
<manifest>
<!-- 指定程序入口-->
<mainClass>com.pengshiyu.Main</mainClass>
</manifest>
</archive>
</configuration>
</plugin>

</plugins>
</build>
</project>

src/main/java/com/pengshiyu/Main.java

package com.pengshiyu;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

public class Main extends Application {

@Override
public void start(Stage primaryStage) throws Exception{
Parent root = FXMLLoader.load(getClass().getResource("/fxml/sample.fxml"));
primaryStage.setTitle("Demo");
primaryStage.setScene(new Scene(root, 600, 600));
primaryStage.show();
}


public static void main(String[] args) {
launch(args);
}
}

src/main/java/com/pengshiyu/Controller.java

package com.pengshiyu;

import javafx.scene.control.Label;

public class Controller {
public Label label;

public void clickButton(){
label.setText("按钮被点击了");
System.out.println("按钮被点击了");
}
}

src/main/resources/fxml/sample.fxml

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.geometry.Insets?>
<?import javafx.scene.layout.GridPane?>

<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>

<GridPane fx:controller="com.pengshiyu.Controller"
stylesheets="/style/main.css"
xmlns:fx="http://javafx.com/fxml";
alignment="center" hgap="10" vgap="10">

<Button mnemonicParsing="false" onAction="#clickButton" text="按钮" />

<Label fx:id="label" layoutX="10"/>

</GridPane>

src/main/resources/style/main.css

.label{
-fx-text-fill: red;
}

指令

# 运行程序
mvn clean jfx:run

# 生成jar文件
mvn package

项目截图

项目截图.png

参考

  1. JavaFX基础:2:使用javafx-maven-plugin管理JavaFX应用
  2. JavaFX基础:3:使用maven-jar-plugin生成用于执行jar文件
            </div>
目录
相关文章
|
数据采集 机器学习/深度学习 人工智能
Bert-vits2-2.3-Final,Bert-vits2最终版一键整合包(复刻生化危机艾达王)
近日,Bert-vits2发布了最新的版本2.3-final,意为最终版,修复了一些已知的bug,添加基于 WavLM 的 Discriminator(来源于 StyleTTS2),令人意外的是,因情感控制效果不佳,去除了 CLAP情感模型,换成了相对简单的 BERT 融合语义方式。
Bert-vits2-2.3-Final,Bert-vits2最终版一键整合包(复刻生化危机艾达王)
|
关系型数据库 数据库 PostgreSQL
postgresql :permission denied to create database
postgresql :permission denied to create database
1444 0
idea+javafx的真正打包方式
本文介绍了使用IntelliJ IDEA进行JavaFX项目打包的正确方法,包括编写一个调用主类的类、引入JavaFX的DLL文件、执行打包操作以及运行打包后的项目的步骤。
1083 0
idea+javafx的真正打包方式
|
运维 Java Devops
阿里云云效操作报错合集之在流水线增加单元测试报错,是什么导致的
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
数据采集 供应链 机器人
Python和RPA什么关系?
Python和RPA什么关系?
662 2
Ant Design Vue UI框架的基础使用,及通用后台管理模板的小demo【简单】
这篇文章介绍了如何使用Ant Design Vue UI框架创建一个简单的后台管理模板,包括创建Vue项目、安装和使用ant-design-vue、以及编写后台管理通用页面的代码和样式。
Ant Design Vue UI框架的基础使用,及通用后台管理模板的小demo【简单】
|
存储 Java 数据库
向量数据库Milvus
在实习期间构建了基于Milvus的向量数据库,用于存储和检索大模型问答对信息。遇到的问题包括:vectorFloat类型在JDK&lt;16时不可用;数据结构和索引选择至关重要。流程包括创建数据库、配置Field、匹配与处理数据、计算Embedding并插入数据。Milvus构建涉及HNSW索引,调整索引参数以优化少量数据的查询速度。向量检索技术包括MMR检索,用于提高内容的多样性和相关性,以及单向量和批量向量搜索,用于高效地检索最相似的向量。搜索参数如`metric_type`、`nprobe`等可调优查询性能。
606 3
|
存储 编解码 文件存储
Windows 中的硬链接、目录联接(软链接)、符号链接、快捷方式
【10月更文挑战第5天】本文介绍了四种链接类型的概念及用途:硬链接允许通过多个入口访问同一文件内容,适用于不复制文件的情况下提供多处访问;软链接(目录联接)用于创建目录间的虚拟映射,可跨越文件系统;符号链接则更为灵活,可链接文件或目录并指向任意路径;快捷方式则是Windows中常用的一种特殊文件类型,便于快速访问程序、文件或网络资源。分别描述了它们的定义、工作原理、特点以及创建方法。
3004 10
|
设计模式 Java
Log4j 输出日志到 TextArea & JavaFX、Swing
Log4j 输出日志到 TextArea & JavaFX、Swing
|
机器学习/深度学习 人工智能 自然语言处理
栩栩如生,音色克隆,Bert-vits2文字转语音打造鬼畜视频实践(Python3.10)
诸公可知目前最牛逼的TTS免费开源项目是哪一个?没错,是Bert-vits2,没有之一。它是在本来已经极其强大的Vits项目中融入了Bert大模型,基本上解决了VITS的语气韵律问题,在效果非常出色的情况下训练的成本开销普通人也完全可以接受。
栩栩如生,音色克隆,Bert-vits2文字转语音打造鬼畜视频实践(Python3.10)