详解JFX11+IDEA跨平台打包发布的完美解决办法_java

来源:脚本之家  责任编辑:小易  

Joom,暂时无法自己入驻,平台停止了公开招商活动(速卖通的优质卖家除外,目前可以在官网自己申请)。一般的入驻渠道:您的月销量达到20w美元,然后有优质跨境销售经验,平台内部邀请开店。卖家反馈,就是所谓找一些服务商,买他们之前注册好的Joom账户,然后开店。这里,仅仅提醒,因为听说还挺贵,所以小心上当,Joom必须是用同名企业注册的Payoneer才能收款,所以同时建议准备好,以免店铺下来无法收款的窘境。关于Joom的一些运营技巧和新手建议、如何收款等,也可以先看看这个解析教程www.zgxue.com防采集请勿采集本网。

1 概述

IDEA2020.1的文档中提到只有JFX8的工程才支持打成jar包,并且,如果直接使用Build Artifacts的话,会如下提示:

2.1 什么是“粉丝头条”:“新浪头条”是针对企业微博广告投放的跨平台解决产品。(基于用户收到微博信息量庞大,而微博信息具有时效性,企业无法使自己的广告到达每一个粉丝)。2.2“新浪头条”优势:a.

IDEA文档有提到这个的解决办法,是使用一些第三方工具。里面介绍了通过IDEA结合自身/Maven/Gradle打包发布JFX11以上版本的方法。但是,不足的地方有: 直接创建JFX工程默认只有一个src目录,不像Maven工程还带有resources与test,给管理资源文件以及外部依赖造成了困难,getClass().getResource()会出现空指针问题,但是好处是只需具备JDK环境,打包出来的文件能带上jmods能跨平台直接运行 直接创建Maven项目虽然是管理依赖以及资源文件方便,但是无论是直接通过Maven打出的jar包还是通过JavaFX Maven Plugins打出来的jar包默认绑定了开发平台的JFX SDK,简单地说就是Linux开发的JFX程序不能直接跑在具有JDK环境的Win上,因为用的是Linux的JFX SDK而不是Win的JFX SDK

然后在各个地方使用,java也一样,解析器在不同的环境下将你的java编译成不同的程序从而实现跨平台这一功能,但是像MFC就不能和java一样了,往往只能在windows下使用,就像人民币在美国不能直接买东西是同

因此,本文结合这两者的优点,参照Maven的目录管理,以JFX工程为基础,记录了从新建工程到发布跨平台JFX应用的过程。

网站访问两大要素: 域名解析到服务器IP。服务器上绑定域名确定网站。域名解析已经完成,默认惯例国际域名解析是24小时内生效,国内域名解析2小时内生效。现在也有即时生效的。

2 环境 IDEA 2020.1 OpenJDK 11 OpenJFX 11 Linux SDK OpenJFX 11 Linux/Windows/Mac OS X jmods

最低0.27元开通文库会员,查看完整内容>原发布者:红中发财 43 引言 互联网的普及已经连接了全世界近30亿人口,目前,互联网上的网页数目已经突破10亿[1],大量的数据在网络中产生,而新的互联网技术和应用

JDK安装就不说了,JFX直接下载然后在工程中通过外部库引入即可,三种jmods解压出来即可,用于最后生成可执行文件时添加的模块。

下载链接戳这里

3 新建JFX工程

这里的项目名为TestJFX,对应修改即可。

4 添加JFX11 SDK

添加上一步下载的对应平台的JFX SDK。

5 添加module-info.java

在src目录右键New->module-info.java,修改如下:

module TestJFX { requires javafx.fxml; requires javafx.controls; opens sample to javafx.fxml; exports sample;}

其中TestJFX为新建项目时的项目名,这个创建module-info.java时就默认加上了,sample为默认包,对应修改。

6 添加VM Options

添加

--module-path /usr/local/jfx/lib:out/production

其中

/usr/local/jfx/lib

为下载的JFX JDK的lib目录,后面的out不需要更改,是默认的编译输出的目录。

7 运行

这时候应该可以Shift+F10或者点击绿色小三角运行了:

当然内容是空的,因为什么也没有加。

8 添加资源文件

默认的fxml是放在与Main类同一目录下的,getResource()也没有加路径直接写上文件名:

但是这是src文件夹,放个fxml还勉强可以接受,放张图片总不合适吧?所以,新建一个资源文件夹,把css,fxml什么的都放里面:

直接在IDEA中移动fxml文件,Main中的引用路径也自动更改,不得不说这个特性是真的好用,但遗憾的是,抛出了空指针异常。

因此采取绝对路径来进行读取文件,通过URL+System.getProperty()指定绝对路径:

@Overridepublic void start(Stage primaryStage) throws Exception{ String path = System.getProperty("user.dir"); URL fxmlUrl = new URL("file:"+path+"/resources/fxml/sample.fxml"); Parent root = FXMLLoader.load(fxmlUrl); primaryStage.setTitle("Hello World"); Scene scene = new Scene(root); scene.getStylesheets().add(new URL("file:"+path+"/resources/css/1.css").toString()); primaryStage.setScene(scene); primaryStage.show();}

其中

System.getProperty("user.dir")

获取项目路径,注意URL前面要加上“file:”,css的获取也同理,只不过是需要转换为String。

9 外部依赖

由于没有了Maven管理依赖,所以外部依赖的管理会相对麻烦一点,基本上是以jar包的形式手动添加,这里以添加Gson为例,戳这里下载jar包,然后在项目目录下新建一个lib文件夹,把jar包放进去:

接着在项目结构中把整个lib文件夹添加到外部库:

然后VM Options中添加lib路径,在上面的VM Options后面加一个冒号和lib就行:

但是,此时可以IDEA还不能进行补全,最后需要修改module-info.java:

加一行requires,此时IDEA能够进行补全了,每个jar包都不同,对应修改即可。

10 制作跨平台镜像

运行没问题之后就可以制作运行时镜像发布了,终端进入项目根路径:

jlink --module-path jmod/linux:out/production:lib --add-modules TestJFX --output linuxlinux/bin/java -m TestJFX/sample.Main

其中

jmod/linux

为开发平台jmod的路径,可以是绝对路径,也可以是相对与项目根目录的相对路径,out/production与上面的VM Options保持一致。

--add-modules

后面跟的是模块名,这是在生成module-info.java时指定的,为项目名。

--output

为输出目录。

后一条命令中-m指定模块名,后面跟包名+主类名。

这样linux平台的镜像就制作好了,Mac与Win的同理,只需要把jmod换成对应平台的jmod即可,但是注意语法有一些差别,Mac的语法同Linux,只需要把jmod路径换一下,但是注意需要整个工程在对应的平台进行jlink:

jlink --module-path xxxxx/{MAC_JMOD}:out/production:lib --add-modules TestJFX --output macmac/bin/java -m TestJFX/sample.Main

Win的语法有些区别,一样需要在Win下进行jlink:

jlink --module-path "xxxxx/{WIN_JMOD};out/production" --add-modules TestJFX --output winwin\bin\java -m TestJFX/sample.Main

下面是Win下的截图:

11 demo

github

12 参考

Getting Started with JavaFX

到此这篇关于详解JFX11+IDEA跨平台打包发布的完美解决办法的文章就介绍到这了,更多相关JFX11+IDEA跨平台打包内容请搜索真格学网以前的文章或继续浏览下面的相关文章希望大家以后多多支持真格学网!

概述2113定义一个变量,用于记录次数,然后这个5261次数没输出一个数自4102己加1,然后处理这个数,取整数,并且再次归零。代码详解使用循环输出列表,利用 计数器控制输出数量,当输出到第十个,计数器归零,重新开始计数print输出增加end参数可以控制输出后以什么结尾这里使用range方法快速生成10-90的数字添加进list列表results=list(range(10,90))n=10#每10个数换一行for i in range(len(results)):print(results[i],end=' ')if(i+1)%10=0:print("\\n")#\\n为转义符 换行的意思out:拓展内容python list列表序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字-它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。Python有6个序列的内置类型,但最常见的是列表和元组。序列都可以进行的操作包括索引,切片,加,1653乘,检查成员。此外,Python已经内置确定序列的长度以及确定最大和最小的元素的方法。列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现。列表的数据项不需要具有相同的类型Python列表函数&方法1 cmp(list1,list2)比较两个列表的元素2 len(list)列表元素个数3 max(list)返回列表元素最大值4 min(list)返回列表元素最小值5 list(seq)将元组转换为列表内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • 浅谈idea2018打包可执行jar包的流程
  • idea打包java程序(包含依赖的所有jar包)
  • 如何用intellij idea2020打包jar的方法步骤
  • 浅析springboot打包上传到docker并实现多实例部署(idea版)
  • idea打包成war包部署到tomcat及访问路径问题(图文详解)
  • idea 打包的jar运行报 "xxx中没有主清单属性"
  • 在idea打包并上传到云服务项目流程分析
  • 将idea工程打包成jar文件的全步骤
  • 详解idea打包jar的多种方式
  • 轻松掌握java单例模式
  • 高内聚低耦合原则_动力节点java学院整理
  • 详解java如何创建annotation
  • java集合stack源码详解
  • spring启动后获取所有拥有特定注解的bean实例代码
  • spring配置动态数据源实现读写分离的方法
  • java 获取服务器环境的实例详解
  • java实现发送短信验证码功能
  • 详解struts2拦截器机制
  • java获取精确到秒的时间戳方法
  • python 如何将一系列数字十个一行输出
  • 个人如何入驻joom平台
  • 电子邮件系统的搭建部署
  • 跨境电商整个流程详解
  • 微博粉丝头条属于兴趣营销么
  • 关于session/cookie的问题,纠结我好几天,请求帮助。
  • 怎样把域名解析到指定IP!要教程~!
  • 大数据平台基准测试流程测试工具解析
  • 百度站长平台的主动试试提交链接功能怎么用,求详解
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全c#教程vbvb.netc 语言java编程delphijavaandroidiosswiftscala易语言汇编语言其它相关首页浅谈idea2018打包可执行jar包的流程idea打包java程序(包含依赖的所有jar包)如何用intellij idea2020打包jar的方法步骤浅析springboot打包上传到docker并实现多实例部署(idea版)idea打包成war包部署到tomcat及访问路径问题(图文详解)idea 打包的jar运行报 "xxx中没有主清单属性"在idea打包并上传到云服务项目流程分析将idea工程打包成jar文件的全步骤详解idea打包jar的多种方式轻松掌握java单例模式高内聚低耦合原则_动力节点java学院整理详解java如何创建annotationjava集合stack源码详解spring启动后获取所有拥有特定注解的bean实例代码spring配置动态数据源实现读写分离的方法java 获取服务器环境的实例详解java实现发送短信验证码功能详解struts2拦截器机制java获取精确到秒的时间戳方法java使double保留两位小数的多方java8 十大新特性详解java.net.socketexception: connjava写入文件的几种方法分享java环境变量的设置方法(图文教程java 十六进制与字符串的转换java list用法示例详解java中file类的使用方法javaweb实现文件上传下载功能实例java 字符串截取的三种方法(推荐java实现支付宝退款功能解析oracle数据库中的对象集合schema菜鸟学习java设计模式之单例模式java在pdf中生成表格的方法spring4新特性之web开发增强springcloud 熔断器hystrix的具体使用mybatis中的扩展实现源码解析java实现登录验证码java基于中介者模式实现多人聊天室功能示java servlet简单实例分享(文件上传下载d
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved