intellij idea 的运行配置是明确指定“用什么、跑哪个、怎么跑”的执行契约;临时配置自动创建且最多保留5个、图标半透明,永久配置需手动保存、图标不透明并持久化于项目中。

IntelliJ IDEA 的运行配置不是“点一下就能跑”的黑盒,而是明确指定“用什么、跑哪个、怎么跑”的执行契约。临时配置会自动消失,永久配置才真正可控——不手动保存,Main类点十次也还是临时的。
为什么 Run 按钮是灰色的或提示 “Nothing to run”
核心原因只有两个:缺少可识别的入口,或上下文缺失。
-
main()方法签名不对(比如参数不是String[] args,或缺少static、public修饰符) - 文件没被标记为源根(
src目录未右键 →Mark Directory as → Sources Root) - 模块未关联 JDK:项目结构(
Ctrl Alt Shift S)→Project→ 检查Project SDK是否已选中有效 JDK - 文件不在模块内,而是直接放在项目根目录下——IDEA 不认为它是“可编译的 Java 源码”
如何把临时配置变成永久配置
临时配置图标是半透明的,5 个上限一到就自动淘汰旧的。想保留?必须显式保存。
- 在编辑器里光标停在
main()方法上,按Alt Enter→ 选Modify run configuration - 或点击右上角运行小部件 → 展开当前配置 → 点击
Save configuration图标(?) - 保存后,配置名左侧图标变实心,且出现在
Run | Edit Configurations列表中 - 如需团队共享,勾选
Store as project file,配置将写入.idea/runConfigurations/下的 XML 文件
Application 配置里哪些字段真不能空
不是所有字段都可省略。以下三项缺一不可,否则无法启动:
-
JRE:必须指向一个已配置的 JDK(不是 JRE),否则编译和运行都会失败 -
Main class:必须填完全限定名,例如com.example.App;只输类名App会报ClassNotFoundException - 工作目录(
Working directory):默认是项目根路径,但如果代码依赖相对路径读取资源(如new FileInputStream("config.json")),改错位置会导致FileNotFoundException
其他如 Program arguments、VM options 可为空,但一旦涉及命令行参数或内存调优,就必须在这里填,不能靠外部脚本补。
Spring Boot / Maven / JUnit 配置和 Application 有什么本质区别
它们不是“高级版 Application”,而是针对不同生命周期和执行模型的专用契约。
-
Spring Boot配置会自动注入-Dspring.profiles.active=dev等参数,并启用 Actuator 端点监听;它不关心Main class是什么,只认@SpringBootApplication注解 -
Maven配置本质是调用mvn spring-boot:run或mvn test,所有行为由 pom.xml 和插件定义,IDEA 只做包装;Goals字段必须填,比如clean compile spring-boot:run -
JUnit配置的Test kind决定扫描范围:选Class就只跑单个测试类,选Pattern才能写com.example.*Test这样的通配;漏选会导致“测试类存在但不执行”
混用模板最典型的坑:用 Application 模板去跑 Spring Boot 主类——它不会加载 application.yml,也不会触发 @PostConstruct,看起来启动了,实际只是裸 JVM 跑了个 main 函数。











