JavaFX15使用IntelliJ打包Jar运行提示找不到main.Launcher主类问题求助
排查解决步骤
- 检查MANIFEST.MF配置
- 解压Jar包,打开
META-INF/MANIFEST.MF文件,确认Main-Class属性值为main.Launcher,注意不要带.class后缀,包名、类名拼写完全一致,末尾不要留多余空格或换行。 - 若使用IntelliJ的Artifact打包,确认主类选择的是
main.Launcher,且MANIFEST.MF的生成路径设置正确,不要放在src/main/java目录下,建议放在项目根目录的META-INF文件夹内,避免IDEA未将正确的MANIFEST文件打入Jar包。
- 检查模块化配置(项目含module-info.java时适用)
- 确认
module-info.java中已经导出main包,示例配置如下:
module 你的模块名 { requires javafx.controls; requires javafx.fxml; // 必须导出main包,否则类加载器无法访问Launcher类 exports main; // 若FXML文件用到main包下的类,需要添加open配置 opens main to javafx.fxml; }
- 模块化Jar运行时不需要
-jar参数,改用--module参数启动,命令示例:
java --module-path "C:\Program Files\Java\javafx-sdk-15.0.1\lib" --add-modules javafx.controls,javafx.fxml --module 你的模块名/main.Launcher
- 验证Jar包结构合法性
- 执行命令
jar tf MenuManager.jar输出Jar包内所有文件路径,确认main/Launcher.class路径正确,不存在src/main/java/main/Launcher.class这类嵌套的错误路径。 - 检查类名大小写是否匹配,类加载器对大小写敏感,即使Windows系统不区分文件名大小写,拼写错误也会导致类找不到。
- 确认Jar包内的JavaFX依赖版本统一为15.0.1,没有混入其他版本的JavaFX类库。
- 快速验证测试
- 执行命令
java -cp MenuManager.jar main.Launcher尝试启动,若能正常运行,可100%确定是MANIFEST.MF的Main-Class配置错误,回到Artifact配置修正即可。
内容的提问来源于stack exchange,提问作者rhagee
相关产品推荐
相关产品推荐

