为什么Homebrew安装的OpenJDK 17环境下JavaFX无法正常运行?
报错根因
从JDK 11版本开始,JavaFX被正式从JDK标准发行包中剥离为独立的可选模块,所有合规的OpenJDK发行版(包括你通过Homebrew安装的OpenJDK、Eclipse Temurin)默认都不会内置JavaFX组件,你遇到的Example.java:1: error: package javafx.application does not exist报错就是缺少对应组件导致的。
无Oracle JDK的解决方法
方案1:直接通过Homebrew安装独立OpenJFX组件
这是最适合当前临时在终端运行小示例的方案,步骤如下:
- 执行安装命令:
brew install openjfx - 编译JavaFX代码时,补充模块路径和依赖参数:
Intel芯片Mac编译命令:javac --module-path /usr/local/opt/openjfx/lib --add-modules javafx.controls,javafx.fxml,javafx.base Example.java
Apple Silicon芯片Mac编译命令:javac --module-path /opt/homebrew/opt/openjfx/lib --add-modules javafx.controls,javafx.fxml,javafx.base Example.java - 运行编译后程序时,同样补充对应参数:
Intel芯片Mac运行命令:java --module-path /usr/local/opt/openjfx/lib --add-modules javafx.controls,javafx.fxml,javafx.base Example
Apple Silicon芯片Mac运行命令:java --module-path /opt/homebrew/opt/openjfx/lib --add-modules javafx.controls,javafx.fxml,javafx.base Example
如果你的程序用到了JavaFX的其他模块(比如media、web),直接在--add-modules参数后面追加对应模块名即可
方案2:安装内置JavaFX的OpenJDK发行版
如果不想每次运行都手动加参数,可以选择预装JavaFX的开源OpenJDK发行版,比如Liberica JDK Full版本、Zulu JDK FX版本,两类发行版都完全开源无授权风险,可直接通过Homebrew的cask源安装,安装完成后可直接编译运行JavaFX程序,无需额外参数。
方案3:用构建工具管理依赖(适合长期开发场景)
如果是长期进行JavaFX项目开发,更推荐使用Maven或者Gradle作为项目构建工具,只需要在项目的配置文件中添加对应版本的JavaFX依赖坐标,构建工具会自动管理组件下载、路径配置等问题,不需要手动调整运行参数,也能避免多环境兼容问题。
内容的提问来源于stack exchange,提问作者Tin Man
相关产品推荐
相关产品推荐

