Windows下Gluon HelloFX原生镜像启动报NoSuchMethodError异常
解决方案
错误根因
该java.lang.NoSuchMethodError: com.sun.glass.ui.win.WinView.notifyResize(II)V报错由两个原因导致:一是静态编译阶段GraalVM裁剪了JNI调用所需的notifyResize方法,二是JavaFX依赖版本与GluonFX插件版本不匹配。
修复步骤
- 锁定pom.xml中JavaFX所有依赖的版本为17.0.2,该版本与GluonFX 1.0.8插件完全适配
- 保留你已添加的
<bundlesList>com.sun.glass.ui.win.themes</bundlesList>配置,在gluonfx-maven-plugin的配置段中新增如下配置:
<reflectionList> <list>com.sun.glass.ui.win.WinView</list> </reflectionList> <jniList> <list>com.sun.glass.ui.win.WinView</list> </jniList>
- 清空历史构建缓存,按顺序执行如下命令重新构建:
mvn cleanmvn gluonfx:buildmvn gluonfx:nativerun
环境校验项
如果执行后仍报错,请确认如下环境配置:
- 使用Gluon定制版GraalVM Java 11 21.2.0版本,不要使用官方CE版GraalVM 21.3.0,Gluon定制版针对JavaFX静态编译做了专属适配
- 每次执行构建前,都要在当前命令行窗口执行
vcvars64.bat脚本,不要复用未执行该脚本的命令行窗口
内容的提问来源于stack exchange,提问作者Sven Döring
相关产品推荐
相关产品推荐

