基于Sublime Text与Spring-Boot-DevTools联动的Java后端微服务热重启

星辰大大_6251

星辰大大_6251

2026-08-16

260人浏览

原创

sublime text 无法直接触发 devtools 自动重启,因其保存 java 源码后不自动编译,target/classes 不更新,而 devtools 仅监听 classpath 下的编译输出路径(如 target/classes),不监听 src/main/java 源码目录。

基于sublime text与spring-boot-devtools联动的java后端微服务热重启

Sublime Text 本身不支持 Java 编译和类加载,直接配合 spring-boot-devtools 实现热重启不可行——它既不能触发 target/classes 更新,也无法参与 Spring 的双类加载器机制。

为什么 Sublime Text 无法直接触发 devtools 自动重启

spring-boot-devtools 只监听 classpath 下的文件变更(默认是 target/classes 和 META-INF/resources),而 Sublime Text 保存 .java 文件后不会自动编译成 .class,也不会更新这些目录。DevTools 根本“看不见”你的修改。

  • DevTools 不监听源码目录(如 src/main/java),只认编译输出路径
  • Sublime Text 没有内置 Java 构建系统,Ctrl+S 只是保存文本,不触发 javac 或 Maven 编译
  • 即使你手动运行 mvn compile,若未启用 fork 或未正确配置插件,spring-boot-maven-plugin 也不会在运行时感知变更

可行的最小闭环:Sublime Text + 命令行构建 + DevTools

绕过 IDE 编译集成,用 Sublime Text 写代码,靠外部工具链把变更送进 target/classes,再由 DevTools 捕获。

java-enterprise
java-enterprise

Java企业开发专家,专注于Spring Boot、微服务架构和JVM优化。适用于:Java语言掌握、

下载
  • 确保 pom.xml 中已声明 spring-boot-devtools 且 <optional>true</optional>,同时 spring-boot-maven-plugin 启用 <fork>true</fork>
  • 在 Sublime Text 中安装 Build System 插件(如 JavaC 或自定义 mvn compile):菜单 Tools → Build System → New Build System,填入:
{
    "shell_cmd": "mvn compile -q",
    "file_regex": "^(...*?):([0-9]+):([0-9]+):\s*(.*)$",
    "working_dir": "$project_path",
    "selector": "source.java"
}
  • 保存为 JavaMvnCompile.sublime-build,然后按 Ctrl+B 即可编译 —— 这会更新 target/classes,触发 DevTools 重启
  • 启动应用时必须用 mvn spring-boot:run(而非 java -jar),否则 DevTools 自动禁用

静态资源热刷新要额外处理

Sublime Text 修改 templates/ 或 static/ 下的 HTML/CSS/JS,默认也会触发重启,但体验卡顿。建议显式排除:

  • 在 application.properties 中加:spring.devtools.restart.exclude=templates/**,static/**
  • 改用 spring.devtools.livereload.enabled=true + 浏览器 LiveReload 插件,避免重启整个上下文
  • 注意:LiveReload 需搭配 spring-boot-devtools 的内置 server(默认端口 35729),不要被防火墙拦截

容易忽略的关键点

很多人卡在“改了代码没反应”,其实问题不在 Sublime Text,而在构建路径与类加载边界上:

  • mvn compile 输出的 class 必须落在 DevTools 监控的 classpath 路径里(通常是 target/classes),不是 out/production 或其他自定义路径
  • 如果项目用了多模块,确保当前模块的 target/classes 是主应用 classpath 的一部分(检查 mvn dependency:tree 中是否被正确引入)
  • spring.devtools.restart.additional-paths 不能指向 src/main/java —— 它只用于添加额外的 *编译后资源目录*,比如你把生成的 JSON Schema 放在 src/main/resources/schema,才需要加这个配置

Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2403

5

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

2024.03.19

6250

13

后端的主要工作内容介绍
后端的主要工作内容介绍

后端是应用程序的服务端部分,负责核心任务,如数据库交互、业务逻辑处理和响应客户端请求。想了解更多后端的相关内容,可以阅读本专题下面的文章。

2024.03.19

5626

10

java
java

Java是一个通用术语,用于表示Java软件及其组件,包括“Java运行时环境 (JRE)”、“Java虚拟机 (JVM)”以及“插件”。php中文网还为大家带了Java相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

2023.06.15

10257

6

java正则表达式语法
java正则表达式语法

java正则表达式语法是一种模式匹配工具,它非常有用,可以在处理文本和字符串时快速地查找、替换、验证和提取特定的模式和数据。本专题提供java正则表达式语法的相关文章、下载和专题,供大家免费下载体验。

2023.07.05

7382

9

java自学难吗
java自学难吗

Java自学并不难。Java语言相对于其他一些编程语言而言,有着较为简洁和易读的语法,本专题为大家提供java自学难吗相关的文章,大家可以免费体验。

2023.07.31

6472

8

java配置jdk环境变量
java配置jdk环境变量

Java是一种广泛使用的高级编程语言,用于开发各种类型的应用程序。为了能够在计算机上正确运行和编译Java代码,需要正确配置Java Development Kit(JDK)环境变量。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.08.01

1124

3

java保留两位小数
java保留两位小数

Java是一种广泛应用于编程领域的高级编程语言。在Java中,保留两位小数是指在进行数值计算或输出时,限制小数部分只有两位有效数字,并将多余的位数进行四舍五入或截取。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.08.02

928

3

java基本数据类型
java基本数据类型

java基本数据类型有:1、byte;2、short;3、int;4、long;5、float;6、double;7、char;8、boolean。本专题为大家提供java基本数据类型的相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.02

1356

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
dev.java 官方:Learn Java
dev.java 官方:Learn Java

共0课时 | 0人学习

Java JDBC数据库连接官方教程
Java JDBC数据库连接官方教程

共0课时 | 0人学习