
无需编译成可执行 JAR,也能通过 CMD 快速运行 Spring Boot 项目——本文详解基于 java -classpath 的直接启动方案,并提供适配 Maven/非 Maven 项目的实操命令与关键注意事项。
无需编译成可执行 jar,也能通过 cmd 快速运行 spring boot 项目——本文详解基于 `java -classpath` 的直接启动方案,并提供适配 maven/非 maven 项目的实操命令与关键注意事项。
在日常开发中,我们常依赖 IDE(如 IntelliJ IDEA)一键启动 Spring Boot 应用,其底层本质是将编译后的类文件(target/classes 或 out/production/...)与所有依赖 JAR 加入 classpath,再调用主类的 main() 方法。而 mvn spring-boot:run 虽便捷,但默认会触发编译、资源拷贝甚至临时打包流程,并非真正“免构建”运行。
要实现类似 IDE 的轻量级启动,核心思路是:手动构造 classpath,直接使用 java 命令启动主类或 Spring Boot 的启动加载器。具体分两种场景:
✅ 场景一:Maven 项目(已执行过 mvn compile)
确保已编译(即 target/classes 目录存在),且依赖已下载至本地仓库(通常无需手动复制 JAR)。推荐使用以下命令(需替换为实际路径和主类名):
java -cp "target/classes:$(mvn dependency:copy-dependencies -DoutputDirectory=target/lib -Dsilent=true -q && echo target/lib/*)" com.example.demo.DemoApplication
? 更简洁可靠的做法(Windows 用户注意路径分隔符):
先执行mvn compile,再运行::: Windows CMD 示例(假设主类为 com.example.App) java -cp "target\classes;target\lib\*" com.example.App# macOS/Linux Bash 示例 java -cp "target/classes:$(find target/lib -name "*.jar" | paste -sd ":" -)" com.example.App
✅ 场景二:跳过 Maven,纯手动 classpath 管理
若不使用 Maven,需自行将所有依赖 JAR 放入 lib/ 目录,并显式列出(或用通配符):
java -cp "target/classes:lib/spring-boot-starter-web-3.1.2.jar:lib/spring-context-6.0.11.jar:lib/tomcat-embed-core-10.1.11.jar:..." com.example.App
⚠️ 注意事项:
- Spring Boot 3.x 要求 Java 17+,请确认
java -version兼容;spring-boot:run默认启用热部署(DevTools),手动启动时需额外添加-Dspring.devtools.restart.enabled=true并引入spring-boot-devtools依赖才支持类变更自动重启;- 若项目含
spring-boot-maven-plugin且配置了layout=ZIP,可解压 JAR 后用JarLauncher启动(不推荐日常开发,仅作了解):java -cp "BOOT-INF/classes:BOOT-INF/lib/*" org.springframework.boot.loader.JarLauncher
✅ 终极技巧:从 IDEA 控制台复用启动命令
IntelliJ 在运行应用时,控制台首行会打印完整启动命令(含绝对路径、JVM 参数、classpath 和主类)。只需复制该行(去掉 [INFO] 前缀),粘贴到 CMD 或终端即可完全复现 IDE 启动行为,零配置、最真实。
总结:mvn spring-boot:run 是开发友好型封装,但“免 JAR 启动”的本质是 classpath 管理。掌握 java -cp 的灵活用法,不仅能脱离 IDE 快速验证,更是深入理解 JVM 类加载机制与 Spring Boot 启动原理的关键一步。


















