IntelliJ新建JavaFX项目运行报InvalidModuleDescriptorException错误求助
报错根因
这是JDK 9+引入的Java平台模块系统(JPMS)和IntelliJ默认Kotlin-Gradle项目的编译路径配置不兼容导致的:
- IntelliJ 2021.2版本搭配JDK 16新建项目时,会默认生成
module-info.java模块描述文件,该文件声明了需要暴露com.example.demo包 - Kotlin代码默认编译输出路径为
build/classes/kotlin/main,但JPMS默认只会扫描Java代码的编译路径build/classes/java/main,找不到对应包就会抛出InvalidModuleDescriptorException异常
解决方案
按适用场景优先级排序如下:
方案1(最快捷,无需模块特性时首选)
直接删除项目根目录下src/main/java/路径里的module-info.java文件,不需要用到JPMS模块特性的场景下,完全可以避开模块校验。修改后重新执行Gradle的clean、build任务,再点击运行即可正常启动。
方案2(需要保留模块系统特性时修改Gradle配置)
打开项目根目录的build.gradle.kts文件,添加配置将Kotlin编译输出路径加入Java模块扫描路径:
sourceSets.main { java.setSrcDirs(listOf("src/main/kotlin")) } tasks.withType<JavaCompile> { options.javaModulePath.set(files( sourceSets.main.get().kotlin.outputDirectory, sourceSets.main.get().java.outputDirectory )) }
修改后同步Gradle配置,重新构建项目即可。
方案3(临时调整运行配置)
点击main函数旁运行按钮的下拉箭头,选择「修改运行配置」:
- 点击「修改选项」,勾选「添加VM选项」
- 在VM选项输入框中填入对应内容:
- Mac/Linux系统:
--module-path build/classes/kotlin/main:build/classes/java/main - Windows系统:
--module-path build\classes\kotlin\main;build\classes\java\main
- Mac/Linux系统:
- 保存配置后重新运行即可
内容的提问来源于stack exchange,提问作者RadekJ
相关产品推荐
相关产品推荐

