“Module not specified”本质是IDEA未识别Maven/Gradle模块,需手动Import Module并选中pom.xml或build.gradle;多项目需独立设置Module SDK;Spring Boot端口冲突应通过VM选项或环境变量动态指定;依赖冲突须用mvn dependency:tree比对版本。

多个Java项目共存时,IDEA里为什么总提示“Module not specified”
这是最常见的表象错误,本质是项目结构未被正确识别为 Maven/Gradle 模块。IntelliJ IDEA 不会自动把子目录当作模块加载,即使它们各自有 pom.xml 或 build.gradle。
- 打开
File → Project Structure → Modules,确认每个项目根目录下都点击了+ → Import Module,并选中对应构建文件 - 避免直接把多个项目文件夹拖进已有工程——这只会变成普通文件夹,不会触发模块导入流程
- 若使用 Maven 多模块聚合(
packaging: pom),必须先导入父pom.xml,子模块才会自动挂载;否则子模块显示为“unlinked”
如何让不同Java项目用各自的JDK版本运行
单机多项目常需兼容 JDK 8、11、17 等版本,但 IDEA 默认继承全局 SDK 设置,容易导致编译失败或运行时 UnsupportedClassVersionError。
- 每个模块可独立设置语言级别和 SDK:右键模块 →
Open Module Settings → Language level和Project SDK - 注意区分两个层级:项目级(
Project SDK)影响新模块默认值;模块级(Module SDK)决定实际编译与运行环境 - 若某模块指定 JDK 11,但运行时仍报错说用了 JDK 8,检查
Run Configuration → JRE是否覆盖了模块设置——这里优先级更高
多个Spring Boot项目端口冲突怎么快速隔离
本地同时启动多个 Spring Boot 项目时,默认都用 8080,Connection refused 或 Address already in use 是必然结果。
- 不推荐硬改每个项目的
application.properties—— 易遗漏、难维护。改用 JVM 参数动态指定:java -Dserver.port=8081 -jar app1.jar
- 在 IDEA 中,每个
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 可能只保留最新下载的版本,引发类缺失。
立即学习“Java免费学习笔记(深入)”;
- 不是所有冲突都会立刻暴露:编译靠
compile范围依赖,运行靠runtime范围,要特别检查test和provided范围是否误参与打包 - 用
mvn dependency:tree -Dverbose在各项目根目录分别执行,比对关键库的版本和引入路径 - IDEA 的
Maven → Show Dependencies图形化视图有时会隐藏传递依赖,不如命令行输出可靠
.idea/misc.xml 里的编码设置,或某次更新后 Gradle wrapper 版本不一致,导致另一台机器拉代码就编译失败——这类隐性耦合,得靠团队约定 + 提交前 git status 多看两眼。










