【问题标题】:Spring Boot DevTools not working in EclipseSpring Boot DevTools 在 Eclipse 中不起作用
【发布时间】:2017-08-26 02:35:09
【问题描述】:

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

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

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

我重新启动了应用程序,但是当我在静态页面上进行一些更改时仍然无法正常工作。

还有其他事情要做吗?

我的 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>

【问题讨论】:

  • 尝试从命令行 mvn spring-boot:run 运行它,它在 STS 和命令行以及相同的 POM 中对我有用。
  • 您安装了LiveReload extension 吗?
  • 我在 Chrome 上安装了 LiveReload 扩展。但仍然无法正常工作。如果我在不同的浏览器中打开,显示相同的页面而不做任何更改。我也尝试清理浏览器的缓存,但没有成功。我清理并安装了 Maven,什么也没有。

标签: java eclipse maven spring-boot spring-boot-devtools


【解决方案1】:

在你的 Eclipse 顶部菜单中你的 Project -> Build Automatically ON ?

【讨论】:

  • 您可能需要添加更多详细信息,说明该设置的作用以及解决问题的原因。就目前的情况而言,它只不过是应在评论中提出的澄清请求。
  • 完美。谢谢
  • 我以前怎么没想到!?这几天一直困扰着我!我几乎尝试了所有与 SpringBoot 相关的设置...我没想到要检查我是否不小心禁用了 Eclipse 中的自动构建 - sigh... 谢谢!
  • 非常感谢。我总是忘记这一点。
【解决方案2】:

我关注了这篇文章https://github.com/spring-projects/spring-boot/issues/7479

因此,要让 devtools 正常工作,您必须添加:

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

秘诀是添加 Optional True 和 Scope 运行时。

【讨论】:

    【解决方案3】:

    这个问题已经回答了,但对我来说并没有完全按照接受的答案或其他答案所说的那样工作。

    我的开发工具按以下方式工作:

    1) 使用 devtools 依赖如下:

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

    2) 删除 Spring Maven 缓存,在 Linux 中是:

    rm -rf ~/.m2/repository/org/springframework/*
    

    3) 返回 Eclipse,按 Alt+F5 并强制清理项目,将每个依赖项从 Maven 重新下载到缓存。

    关键是将 optional 标志设置为 true 到 devtools 的依赖项擦除 Maven 缓存。

    希望这对某人有所帮助。

    【讨论】:

    • 第 2 步为我解决了这个问题。似乎有某种缓存导致 devtools 未正确加载。
    【解决方案4】:

    除了上面给出的答案,您还需要在 Eclipse 中启用 Build Automatically。如果您的 java 文件被更新,Dev Tools 并不重要,它唯一寻找的是 .class,资源文件的更改。

    对于 IntelliJ,请参阅下图。

    【讨论】:

      【解决方案5】:

      根据 Spring Boot 文档:

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

      http://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-devtools.html#using-boot-devtools-restart

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


      编辑:

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

      # Thymeleaf
      spring.thymeleaf.cache = false
      
      #FreeMarker
      spring.freemarker.cache = false
      
      #Groovy
      spring.groovy.template.cache = false
      

      http://docs.spring.io/spring-boot/docs/current/reference/html/howto-hotswapping.html#howto-reload-static-content

      【讨论】:

      • 我在 Chrome 上安装了 LiveReload 扩展。但仍然无法正常工作。如果我在不同的浏览器中打开,显示相同的页面而不做任何更改。我也尝试清理浏览器的缓存,但没有成功。我清理并安装了 Maven,什么也没有。
      • @JohnMendes 在 Eclipse 中,您是否在添加 devtools 依赖项后尝试清理并重建项目?还有你用什么做模板?
      • 刚刚查看了您的 pom 并看到了 Thymeleaf 的依赖项。您需要在属性文件中将 Thymeleaf 模板缓存设置为 false。 spring.thymeleaf.cache=false
      【解决方案6】:

      即使在尝试了上述答案之后,如果仍然无法正常工作,请尝试在 Eclipse 中为项目自动启用构建。之后它对我有用。

      【讨论】:

        【解决方案7】:

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

        spring.devtools.restart.enabled=true
        

        【讨论】:

          【解决方案8】:

          就我而言,问题出在 Eclipse 的 Java 构建路径 (Right Click Project &gt; Properties &gt; Java Build Path &gt; Source Tab) 上,最终导致其中一个根本不存在的源文件夹出现错误。从构建路径中删除该文件夹后,它开始自动构建。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2021-10-28
            • 2021-07-15
            • 1970-01-01
            • 2018-08-29
            • 2019-11-27
            • 2018-08-27
            • 2016-06-24
            • 1970-01-01
            相关资源
            最近更新 更多