1 概述

最近研究JFX,写出来了但是打包不了,这。。。尴尬。。。

IDEA的文档说只支持Java8打成jar包:



尝试过直接使用Maven插件的package,不行,也尝试过Build Artifacts,也不行,各种奇奇怪怪的问题。包括下图中的

Error....fx:deploy is not available in this JDK

不过幸好文档末尾提到可以使用一些第三方工具



因此记录一下使用IDEA打包JFX11工程的过程。

2 环境

  • IDEA 2020.1
  • OpenJDK 11
  • OpenJFX 11

只需安装IDEA与JDK即可,JFX可以在pom.xml中引入。

3 创建工程

选择Maven,选择Create from archetype,然后Add Archetype并填上GroupId:

org.openjfx

与ArtifactId:

javafx-maven-archetypes

还有version:

0.0.1



下一步自定义,这里为了方便就直接默认了。



然后修改archetypeArtifactId为

javafx-archetype-fxml



完成即可。

4 检查文件

Maven同步完后,检查项目目录下的module-info.java与pom.xml,其中pom.xml不应该是下图这样的:



而应该是这样的,包含了javafx.controls与javafx.fxml依赖,还有javafx-maven-plugin插件:



同时src下的module-info.java应该长这样:



module-info.java包含了所需要的javafx.controls与javafx.fxml这两个模块。

5 修改插件依赖

默认的javafx-maven-plugin版本应该为0.0.1:



整个去掉,修改为:

<plugin>
<groupId>org.openjfx</groupId>
<artifactId>javafx-maven-plugin</artifactId>
<version>0.0.4</version>
<configuration>
<stripDebug>true</stripDebug>
<compress>2</compress>
<noHeaderFiles>true</noHeaderFiles>
<noManPages>true</noManPages>
<launcher>launcher</launcher>
<jlinkImageName>output</jlinkImageName>
<jlinkZipName>outputzip</jlinkZipName>
<mainClass>org.openjfx.App</mainClass>
</configuration>
</plugin>

其中launcher为可执行文件名,jlinkImageName为Image输出目录名,jlinkZipName为zip文件名,mainClass为主类。

6 运行并打包

从右侧栏的Maven通过javafx插件运行并打包:



7 测试

根据修改插件时的目录,进入对应的target下的子目录直接运行即可:

项目目录/target/output/bin/launcher

注意这个是跨平台的,只需具备JDK11环境即可,发布只需要把zip文件发布。

8 demo

9 扩展阅读

这篇文章是OpenJFX的文档,主要介绍了:

  • 通过三种方式(JFX+Maven+Gradle)运行Hello World
  • 构建运行镜像(CLI+Maven+Gradle+自定义镜像)
  • IntelliJ/NetBeans/Eclipse通过三种方式(IDE自身+Maven+Gradle)运行与打包JFX

链接戳这里

IDEA通过Maven打包JavaFX工程(OpenJFX11)的更多相关文章

  1. maven打包 springBoot 工程时,默认识别resources目录,习惯使用 resource 目录的需要手动指定静态资源目录

    最近项目开发,发现springBoot项目在使用maven打包时,我们静态资源文件都放在resource目录下面,大致如下: 在使用maven打包时,发现静态资源没有打进去.原来springBoot默 ...

  2. 如何配置pom.xml用maven打包java工程

    最近由于项目需要,研究了一下maven的打包,项目要做到 1,生成3个目录/lib,/conf,/bin目录 2,把所有的jar目录编译.拷贝到/lib目录(包括maven的jar包和lib目录下的j ...

  3. windows下maven打包eclipse工程

    打包过程中,可能出现的2个问题: ①.[WARNING] File encoding has not been set, using platform encoding GBK, i.e. build ...

  4. 3.eclipse中 maven打包web工程几种方式

    1.右键项目-export 选择war file导出即可 2.第二种:右键项目-RUN AS -maven build..goals填入:clean package 第三种方式:右键项目.选择Debu ...

  5. Maven多模块工程打包指定模块工程方法

    Maven多模块工程打包指定模块工程执行如下命令: mvn clean package -pl  指定模块工程名 -am 参数说明: -am --also-make 同时构建所列模块的依赖模块:-am ...

  6. IDEA中创建父子工程与maven打包Springboot聚合工程报错程序包不存在问题处理

    公司新项目需使用java技术栈,便使用IDEA搭建了一个多SpringBoot项目的聚合工程,因为初次使用,遇到了很多问题,maven打包时各种报错,在网上查了好多终于解决了,为巩固记忆,特作此记录. ...

  7. 打包SpringBoot工程并部署

    使用工具:Eclipse Linux下JDK版本:jdk-7u79-linux-x64.tar.gz 一.打包成jar并部署 步骤如下: 首先上pom.xml: <project xmlns=& ...

  8. Maven打包pom里面配置exclude 排除掉环境相关的配置文件

    Maven打包pom里面配置exclude 排除掉环境相关的配置文件 有几种方式:1. 打包时,指定环境参数把环境的配置文件复制过去2. 不打包所有的环境相关的配置文件,直接由运维的人维护 可以在上传 ...

  9. maven 打包 时出现非法字符: /65279错误

    maven 打包 时出现非法字符: /65279错误 碰到的一个问题: 使用下面的命令给工程打包时, maven mvn clean package -Ptest01 -Dmaven.test.ski ...

随机推荐

  1. 从几个问题开始理解CFS调度器

    本文转载自从几个问题开始理解CFS调度器 导语 CFS(完全公平调度器)是Linux内核2.6.23版本开始采用的进程调度器,它的基本原理是这样的:设定一个调度周期(sched_latency_ns) ...

  2. JS数字每三位加逗号的最简单方法

    <script> function thousands(num){ var str = num.toString(); var reg = str.indexOf("." ...

  3. 1053 Path of Equal Weight——PAT甲级真题

    1053 Path of Equal Weight 给定一个非空的树,树根为 RR. 树中每个节点 TiTi 的权重为 WiWi. 从 RR 到 LL 的路径权重定义为从根节点 RR 到任何叶节点 L ...

  4. 1086 Tree Traversals Again——PAT甲级真题

    1086 Tree Traversals Again An inorder binary tree traversal can be implemented in a non-recursive wa ...

  5. 不能回滚的Redis事务还能用吗

    前言 事务是关系型数据库的特征之一,那么作为 Nosql 的代表 Redis 中有事务吗?如果有,那么 Redis 当中的事务又是否具备关系型数据库的 ACID 四大特性呢? Redis 有事务吗 这 ...

  6. Dev GridControl列绑定LookUpEdit数据源:默认值

    在Winform开发过程中,GridControl控件是比较常见的,尤其是其数据源的灵活性,为我们提供了不少的便利. 在使用Dev的GridControl的时候,有时候会在列的Column Edit属 ...

  7. 鸿蒙开源第三方组件 ——B站开源弹幕库引擎的迁移(上)

    鸿蒙入门指南,小白速来!0基础学习路线分享,高效学习方法,重点答疑解惑--->[课程入口] 目录: 一.弹幕库的基础知识 二.弹幕库的使用方法 三.sample解析 四.作者系列文章合集 前言 ...

  8. 用代码来实践Web缓存

    Web缓存是可以自动保存常见文档副本的HTTP设备.当Web请求抵达缓存时,如果本地有"已缓存的副本",就可以从本地存储设备而不是原始服务器中提取这个文档. 上面是<HTTP ...

  9. Go语言实现布谷鸟过滤器

    转载请声明出处哦~,本篇文章发布于luozhiyun的博客:https://www.luozhiyun.com/archives/453 介绍 在我们工作中,如果遇到如网页 URL 去重.垃圾邮件识别 ...

  10. 后端程序员之路 14、NumPy

    NumPy - NumPyhttp://www.numpy.org/ NumPy-快速处理数据 - 用Python做科学计算http://old.sebug.net/paper/books/scipy ...