JFoenix
(已不再更新,在新版本jdk中,许多类已不兼容模块化相关变更),使用MaterialFX 作为示例使用的控件库JFoenix
,所以项目也移除了有关--add-exports
或是--add-opens
的配置,如果后续使用第三方库或者jdk
本身内部库的时候,遇到了相关错误,可以查看17及之前的版本的配置是怎么配置的i18n
的配置,支持各控件StringProperty
进行属性绑定使用,并通过AppResource.setLanguage(Locale.SIMPLIFIED_CHINESE);
来进行语言动态切换com.icuxika.api.API
类,支持对类似Spring Boot
后端返回的json
数据自动泛型转换对应实体类,并且提供了文件下载的进度显示,以及请求上传的进度显示的支持FXML
,并支持一个属性变更动态切换不同主题css
样式文件,可以查看com.icuxika.AppView
类non-modular
分支实现 (Kotlin)set JAVA_HOME="jdk18主目录"
,PowerShell中设置的临时环境变量对mvn无效(不是很确定,但你要考虑这一因素),在cmd中设置的有效当前配置下,此方式(包括Gradle方式的手动版)存在问题,原因是,使用
com.gluonhq.gluonfx-gradle-plugin
插件需要依赖org.openjfx.javafxplugin
插件,这种情况会产生两个依赖, 如javafx-base
与javafx:base:mac
,然后Java默认的模块化系统读取的时候就会从两个包中发现两个一样的模块从而产生错误。解决方式:一、方式二不受此问题影响;二:不需要使用GraalVm的情况下,注释掉com.gluonhq.gluonfx-gradle-plugin
与org.openjfx.javafxplugin
插件,然后注释掉对应的javafx
依赖配置块与gluonfx
配置块,最后手动在dependencies
中设置JavaFX
的依赖。
使用gradle自定义任务拼接命令进行打包(不要变动项目的gradle版本设置,同时请确认gradle运行在java18环境下)
gradlew package2Image
gradlew package2Installer
gradlew jpackageImage
gradlew jpackage
平台图标文件类型
Windows
: icomacOS
: icnsLinux
: png
resources
目录下已经存在了各个图标文件,需要配置org.codehaus.mojo:exec-maven-plugin
插件在不同平台下--icon
参数的值,如:${project.basedir}/src/main/resources/application.icns
mvn clean
jar
包(本步骤会自动拷贝项目所需第三方依赖到target/alternateLocation
目录下) -> mvn package
mvn exec:exec@image
mvn exec:exec@installer
当前版本待测试
gradle assemble(jar)
构建出的jar包路径(build目录)来执行,如果使用mvn package
需要自行替换对应的jar包路径(target目录)。mvn javafx:run
、mvn javafx:jlink
)-p
参数的值,可以使用gradle printDependentJarsList
的结果来替换)C:\CommandLineTools\Java\jdk-17\bin\java.exe --add-exports javafx.controls/com.sun.javafx.scene.control.behavior=com.jfoenix -p ".\build\libs\JavaFX-Package-Sample-1.0.0.jar;C:\CommandLineTools\Java\javafx-sdk-17\lib;C:\Users\icuxika\.m2\repository\com\jfoenix\jfoenix\9.0.10\jfoenix-9.0.10.jar" -m "sample/com.icuxika.MainApp"
C:\CommandLineTools\Java\jdk-17\bin\jpackage.exe -n JavaFXSample --java-options "--add-exports=javafx.controls/com.sun.javafx.scene.control.behavior=com.jfoenix" -p ".\build\libs\JavaFX-Package-Sample-1.0.0.jar;C:\CommandLineTools\Java\javafx-jmods-17;C:\Users\icuxika\.m2\repository\com\jfoenix\jfoenix\9.0.10\jfoenix-9.0.10.jar" -m "sample/com.icuxika.MainApp" --icon ./src/main/resources/application.ico --app-version 1.0.0 --dest ./build/build-direct-package --temp ./build/build-direct-package/temp --win-dir-chooser --win-menu --win-menu-group JavaFXSample --win-shortcut
C:\CommandLineTools\Java\jdk-17\bin\jpackage.exe --type app-image -n JavaFXSample --java-options "--add-exports=javafx.controls/com.sun.javafx.scene.control.behavior=com.jfoenix" -p ".\build\libs\JavaFX-Package-Sample-1.0.0.jar;C:\CommandLineTools\Java\javafx-jmods-17;C:\Users\icuxika\.m2\repository\com\jfoenix\jfoenix\9.0.10\jfoenix-9.0.10.jar" -m "sample/com.icuxika.MainApp" --icon ./src/main/resources/application.ico --app-version 1.0.0 --dest ./build/build-direct-app-package
mvn javafx:jlink
构建出的镜像来构建可执行程序(pom.xml
插件里已经指定了--add-exports
等参数,但是此命令依旧需要加,java15时却是不需要的)生成exe
C:\CommandLineTools\Java\jdk-17\bin\jpackage.exe --type app-image -n JavaFXSample --java-options "--add-exports=javafx.controls/com.sun.javafx.scene.control.behavior=com.jfoenix" -m "sample/com.icuxika.MainApp" --icon "./src/main/resources/application.ico" --runtime-image "./target/build-link/" --dest "./target/build-package"
构建出安装包
C:\CommandLineTools\Java\jdk-17\bin\jpackage.exe -n JavaFXSample --app-image ./target/build-package/JavaFXSample --app-version 1.0.0 --dest ./target/build-link-package --temp ./target/build-link-package/temp --win-dir-chooser --win-menu --win-menu-group JavaFXSample --win-shortcut
Windows版本待测试
export GRAALVM_HOME=export GRAALVM_HOME=/Users/icuxika/CommandLineTools/graalvm-ce-java17-22.0.0.2/Contents/Home
22.0.0.2
没有此操作也未影响后面的步骤)执行 $GRAALVM_HOME/bin/gu --jvm install native-image
GraalVM Community 22.0
目前并不支持在java18
的环境下进行运行,因此<maven.compiler.release>17</maven.compiler.release>
项目依旧需要使用java17
,如果你不使用GraalVM
,则可以更改为18
Downloading JavaFX static libs...
的过程,此下载可能需要翻墙GRAALVM_HOME
的配置,你应当确保JAVA_HOME
也正确配置mvn gluonfx:build
gradle nativeBuild
mvn gluonfx:run
gradle nativeRun
macOS上
mvn gluonfx:run
或gradle nativeRun
不会报告任何错误,但直接双击生成的程序运行时,关联的控制台窗口会报告java.lang.NoSuchMethodError: com.sun.glass.ui.mac.MacAccessible.accessibilityAttributeNames
,但不会影响程序的运行
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。