Java Spring Boot开发工具在Eclipse中不工作

Java Spring Boot开发工具在Eclipse中不工作,java,eclipse,maven,spring-boot,spring-boot-devtools,Java,Eclipse,Maven,Spring Boot,Spring Boot Devtools,我使用Spring、JPA、MySQL和Web构建了一个应用程序。我开发了一个模板文件夹中的静态页面正常工作 但是,当我在静态页面上更改某些内容时,我无法用更改重新加载它。然后,打开pom.xml并添加 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </de

我使用Spring、JPA、MySQL和Web构建了一个应用程序。我开发了一个模板文件夹中的静态页面正常工作

但是,当我在静态页面上更改某些内容时,我无法用更改重新加载它。然后,打开pom.xml并添加

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
</dependency>

org.springframework.boot
弹簧靴开发工具
我重新启动了应用程序,但是,当我在静态页面上做一些更改时,仍然无法工作

还有别的事要做吗

我的POM.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.engsoftware</groupId>
    <artifactId>cobranca</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>

    <name>Cobranca</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.2.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>


</project>

4.0.0
com.eng软件
科布兰卡
0.0.1-快照
战争
科布兰卡
SpringBoot的演示项目
org.springframework.boot
spring启动程序父级
1.5.2.1发布
UTF-8
UTF-8
1.8
org.springframework.boot
spring引导启动器数据jpa
org.springframework.boot
弹簧启动装置
org.springframework.boot
SpringBootStarterWeb
mysql
mysql连接器java
运行时
org.springframework.boot
弹簧启动机tomcat
假如
org.springframework.boot
弹簧起动试验
测试
org.springframework.boot
弹簧靴开发工具
org.springframework.boot
springbootmaven插件

根据Spring Boot文档:

每当类路径上的文件发生更改时,使用spring boot devtools的应用程序将自动重新启动。在IDE中工作时,这是一个有用的特性,因为它为代码更改提供了一个非常快速的反馈循环。默认情况下,将监视类路径上指向文件夹的任何条目的更改。请注意,某些资源(如静态资产和视图模板)不需要重新启动应用程序

模板和静态资产不需要重新启动。您的浏览器很可能正在缓存模板并使用缓存的版本,而不是请求新模板。如果清除浏览器缓存,应该会看到更新的模板


编辑:

根据您使用的模板技术,您需要在属性文件中设置属性以禁用模板缓存

# Thymeleaf
spring.thymeleaf.cache = false

#FreeMarker
spring.freemarker.cache = false

#Groovy
spring.groovy.template.cache = false

我关注了这篇文章

因此,要使devtools工作,必须添加:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <optional>true</optional>
    <scope>runtime</scope>
</dependency>

org.springframework.boot
弹簧靴开发工具
真的
运行时

秘诀是添加可选的True和Scope运行时。

即使尝试了上述答案,如果仍然不起作用,请尝试在eclipse中为项目自动启用构建。在那之后,它对我起了作用。

在eclipse顶部菜单中,您的
项目
->
自动构建

这个问题已经得到了回答,但对我来说,并没有完全按照公认的答案或其他答案来工作

我的devtools的工作方式如下:

1) 按如下方式使用devtools依赖项:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <optional>true</optional>
    <scope>runtime</scope>
</dependency>
3) 返回Eclipse,按Alt+F5并强制清理项目,然后将每个依赖项从Maven重新下载到缓存中

关键是将
optional
标志设置为
true
,使其进入devtools的依赖项并擦除Maven缓存


希望这对某人有帮助。

这对我来说很有用。在application.properties文件中添加以下行

spring.devtools.restart.enabled=true

除了上面给出的答案之外,还需要在Eclipse中自动启用构建。如果您的java文件被更新,对开发工具来说并不重要,它只会查找.class和资源文件的更改

有关IntelliJ,请参阅下图


试着从命令行运行它
mvn spring boot:run
,它在STS中对我有效,在命令行中对同一POM也有效。你安装了吗?我在Chrome上安装了LiveReload扩展。但仍然不起作用。如果在其他浏览器中打开,则显示相同的页面而不进行任何更改。我也尝试清理浏览器的缓存,但没有成功。我清理并安装Maven什么都没有。我在Chrome上安装了LiveReload扩展。但仍然不起作用。如果在其他浏览器中打开,则显示相同的页面而不进行任何更改。我也尝试清理浏览器的缓存,但没有成功。我清理并安装了Maven,什么都没有。@JohnMendes在Eclipse中,在添加了devtools依赖项之后,您是否尝试过清理并重建项目?还有,你用什么做模板呢?看看你的pom,看到了Thymeleaf的依赖性。您需要在属性文件中将Thymeleaf模板缓存设置为false。spring.thymeleaf.cache=false您可能需要添加更多关于该设置的作用以及解决问题的原因的详细信息。就目前的情况来看,这只不过是一个澄清请求,应该放在评论中。太好了。谢天谢地,我以前没想过吗!?这已经困扰了我好几天了!我尝试了几乎所有与SpringBoot相关的设置。。。我没有想到检查我是否意外地禁用了Eclipse中的自动构建-叹气。。。谢谢谢谢。我总是忘记这件事。第二步帮我解决了。似乎有某种缓存导致devtools没有正确加载。
spring.devtools.restart.enabled=true