




“Module not specified”本质是IDEA未识别Maven/Gradle模块,需手动Import Module并选中pom.xml或build.gradle;多项目需独立设置Module SDK;Spring Boot端口冲突应通过VM选项或环境变量动态指定;依赖冲突须用mvn dependency:tree比对版本。
这是最常见的表象错误,本质是项目结构未被正确识别为 Maven/Gradle 模块。IntelliJ IDEA 不会自动把子目录当作模块加载,即使它们各自有 pom.xml 或 build.gradle。
File → Project Structure → Modules,确认每个项目根目录下都点击了 + → Import Module,并选中对应构建文件packaging: pom),必须先导入父 pom.xml,子模块才会自动挂载;否则子模块显示为“unlinked”单机多项目常需兼容 JDK 8、11、17 等版本,但 IDEA 默认继承全局 SDK 设置,容易导致编译失败或运行时 UnsupportedClassVersionError。
Open Module Settings → Language level 和 Project SDK
Project SDK)影响新模块默认值;模块级(Module SDK)决定实际编译与运行环境Run Configuration → JRE 是否覆盖了模块设置——这里优先级更高本地同时启动多个 Spring Boot 项目时,默认都用 8080,Connection refused 或 Address already in use 是必然结果。
application.properties —— 易遗漏、难维护。改用 JVM 参数动态指定:java -Dserver.port=8081 -jar app1.jar
Run Configuration 下的 VM options 栏填入 -Dserver.port=8082,比改配置文件更灵活application.yml 中写server:
port: ${PORT:8080},再通过环境变量 PORT=8083 启动,适配 CI/CD 场景NoClassDefFoundError
多个项目共享同一个 Maven 本地仓库(~/.m2/repository),但各自依赖树不同,尤其当 A 项目依赖 guava:30.0-jre、B 项目依赖 guava:29.0-jre,Maven 可能只保留最新下载的版本,引发类缺失。
compile 范围依赖,运行靠 runtime 范围,要特别检查 test 和 provided 范围是否误参与打包mvn dependency:tree -Dverbos
e 在各项目根目录分别执行,比对关键库的版本和引入路径Maven → Show Dependencies 图形化视图有时会隐藏传递依赖,不如命令行输出可靠.idea/misc.xml 里的编码设置,或某次更新后 Gradle wrapper 版本不一致,导致另一台机器拉代码就编译失败——这类隐性耦合,得靠团队约定 + 提交前 git status 多看两眼。