JavaFX项目启动报Exception in Application start method错误求助
解决JavaFX项目中的
Exception in Application start method错误 错误根源
这个NoSuchMethodError的核心原因是依赖版本不兼容:
- 你使用的JMetro 11.6.16是为JavaFX 11开发的,但项目依赖的JavaFX是17.0.2。JavaFX 17对内部API(比如
com.sun.javafx.scene.NodeHelper类的方法)做了修改,导致JMetro调用的方法不存在。 - 同时运行环境是Java 11,却搭配了JavaFX 17,JavaFX版本与JDK版本的兼容性不匹配(JavaFX 17建议搭配JDK 17+)。
解决方案
方案一:统一使用JavaFX 11 + JMetro 11.x(适配Java 11)
将JavaFX版本降级到11.x,与JMetro、Java 11保持版本一致:
- 修改Maven中的JavaFX依赖:
<dependency> <groupId>org.openjfx</groupId> <artifactId>javafx-controls</artifactId> <version>11.0.2</version> </dependency> <dependency> <groupId>org.openjfx</groupId> <artifactId>javafx-fxml</artifactId> <version>11.0.2</version> </dependency>
- 确认IntelliJ的运行环境配置:
- 打开
File > Project Structure > Project,将Project SDK设置为Java 11 - 进入
File > Settings > Build, Execution, Deployment > Build Tools > Maven > Runner,将JRE设置为Java 11
- 打开
- 执行命令重新构建运行:
mvn clean javafx:run
方案二:升级到Java 17 + JavaFX 17 + 适配版本的JMetro
如果想保留JavaFX 17,需要同步升级JDK和JMetro版本:
- 将电脑的JDK切换到Java 17,并在IntelliJ中更新Project SDK和Maven Runner的JRE为Java 17
- 修改JMetro依赖为适配JavaFX 17的版本:
<dependency> <groupId>org.jfxtras</groupId> <artifactId>jmetro</artifactId> <version>17.0.11</version> <type>pom</type> </dependency>
- 保持JavaFX 17.0.2的依赖不变,执行命令重新构建运行:
mvn clean javafx:run
额外检查项
- 清理本地Maven仓库中可能存在的冲突依赖:删除
~/.m2/repository/org/openjfx和~/.m2/repository/org/jfxtras目录后,重新下载依赖 - 检查IntelliJ的Run Configuration,确保没有手动指定错误的JDK或JavaFX启动参数
内容的提问来源于stack exchange,提问作者dingdingtalk
相关产品推荐
相关产品推荐

