MacOS下OpenJDK16打包JavaFX找不到javafx-packager报错如何解决
问题根源
你遇到的报错确实是Java版本和插件不兼容导致的。你使用的com.zenjava:javafx-maven-plugin:8.8.3是JDK 8时代的专属插件,早已停止维护,仅适配内置了JavaFX以及javafx-packager、ant-javafx.jar组件的Oracle JDK 8,从JDK 9开始JavaFX已经从JDK官方发行版中剥离,你使用的JDK 16中根本不存在该插件依赖的组件,因此执行jfx:native命令时会找不到对应构件。
解决方案
- 首先清理pom.xml中的冗余配置,直接删除
com.zenjava的javafx-maven-plugin整段配置,你项目中已经引入的官方org.openjfx:javafx-maven-plugin即可满足构建需求。 - JDK 14及以上版本已经内置了
jpackage工具,可以直接将jlink生成的运行时镜像打包成对应平台的安装包,你使用的JDK 16原生支持该工具,无需额外引入插件。
具体操作步骤
- 先正常执行jlink生成运行时镜像,你当前已经可以成功完成这一步,生成的镜像默认路径为
target/jlink/csgo_cfg_helper - 执行以下jpackage命令生成dmg安装包:
jpackage --type dmg \ --name CSGOCfgHelper \ --app-version 1.0 \ --main-class com.ginkgo.csgo.Main \ --input target \ --main-jar csgo-cfg-helper-client-1.0-SNAPSHOT.jar \ --runtime-image target/jlink/csgo_cfg_helper \ --dest target/installer
如果需要生成pkg格式,只需要把--type dmg改成--type pkg即可。
可选:将打包流程集成到Maven中
如果希望直接通过Maven命令完成打包,也可以在pom中添加jpackage-maven-plugin插件配置:
<plugin> <groupId>io.github.fvarrui</groupId> <artifactId>jpackage-maven-plugin</artifactId> <version>1.10.1</version> <executions> <execution> <phase>package</phase> <goals> <goal>jpackage</goal> </goals> <configuration> <name>CSGOCfgHelper</name> <appVersion>1.0</appVersion> <mainClass>com.ginkgo.csgo.Main</mainClass> <runtimeImage>target/jlink/csgo_cfg_helper</runtimeImage> <macDmg>true</macDmg> <outputDirectory>target/installer</outputDirectory> </configuration> </execution> </executions> </plugin>
配置完成后执行mvn clean package即可同时完成编译、jlink打包、安装包生成的全流程。
内容的提问来源于stack exchange,提问作者keepslient
相关产品推荐
相关产品推荐

