Eclipse运行JavaFx项目报错找不到或无法加载主类Sample.Main如何解决?
问题诱因
- Java 11及以上版本已将JavaFX从标准JDK中移除,即便编译期构建路径配置了JavaFX库,运行时默认也不会将JavaFX类加载到执行路径中,是该问题的最高发诱因
- Eclipse运行配置未同步构建路径的JavaFX依赖,运行时类路径缺失对应库文件
- 所用JavaFX库的版本、架构(x86/x64/ARM)与当前JDK不匹配,导致类加载失败
- 若项目启用了Java模块系统(存在
module-info.java),未正确声明JavaFX模块依赖、未开放对应包的反射权限也会触发该错误
解决方法
方案1:添加运行时VM参数(通用解决方案)
- 右键项目依次选择
Run As->Run Configurations - 找到当前运行
Sample.Main的配置项,切换到Arguments标签 - 在
VM arguments输入框中添加如下参数,将/path/to/javafx-sdk/lib替换为你本地JavaFX SDK的lib目录实际路径:
--module-path /path/to/javafx-sdk/lib --add-modules javafx.controls,javafx.fxml,javafx.graphics
- 点击
Apply保存后重新运行项目即可
方案2:修正运行配置类路径
- 进入运行配置页后切换到
Classpath标签 - 展开
User Entries项,确认JavaFX相关jar包已被包含,若缺失则点击Add External JARs手动导入JavaFX SDK lib目录下的所有jar包 - 保存配置后重新运行
方案3:补全模块系统配置(仅适用于带module-info.java的项目)
打开项目根目录的module-info.java文件,添加如下配置(替换其中的模块名即可):
module your.project.module.name { requires javafx.controls; requires javafx.fxml; requires javafx.graphics; opens Sample to javafx.fxml; exports Sample; }
opens Sample to javafx.fxml用于给FXML开放Sample包的反射访问权限,否则加载FXML时会抛出权限异常。
方案4:验证依赖兼容性
检查本地JavaFX SDK的版本、架构与所用JDK完全匹配,避免架构不兼容导致的类加载失败。
内容的提问来源于stack exchange,提问作者JoJo Rabbit
相关产品推荐
相关产品推荐

