Java+JavaFX+Gradle构建JxBrowser应用启动报IllegalAccessError异常
错误原因
你遇到的报错本质是Java 9+模块系统的访问限制问题:
- 你使用的JxBrowser 7.15为模块化组件,所属模块名为
jxbrowser.javafx,该组件运行时需要访问javafx.graphics模块下的非公开API包com.sun.glass.ui - 你当前配置的VM参数仅将
com.sun.glass.ui包导出给了ALL-UNNAMED(即未使用模块系统的普通类),未对有明确模块名的jxbrowser.javafx开放权限,因此触发访问错误。
解决建议
- 方案1:修正VM导出参数,为
jxbrowser.javafx模块单独开放权限,在你当前的applicationDefaultJvmArgs中新增如下配置即可:
"--add-exports", "javafx.graphics/com.sun.glass.ui=jxbrowser.javafx"
- 方案2:升级JxBrowser到更高稳定版本,7.25及之后的版本对JavaFX模块访问做了适配,可减少手动配置VM参数的工作量,升级时注意同步更新依赖中所有JxBrowser相关组件的版本号。
- 附加优化:你当前的VM参数存在重复配置,两行
--add-exports javafx.graphics/com.sun.javafx.stage=ALL-UNNAMED可以删除其中一行,避免冗余。 - 兼容性检查:确认你使用的JavaFX版本在JxBrowser 7.15的兼容范围内(支持JavaFX 11~17),如果使用了高于17的JavaFX版本,建议降级到兼容版本避免出现其他兼容问题。
内容的提问来源于stack exchange,提问作者Derek
相关产品推荐
相关产品推荐

