标签: spring-boot-devtools

Spring Boot DevTools无法在Eclipse中运行

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

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

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
</dependency>
Run Code Online (Sandbox Code Playgroud)

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

还有什么可以做的吗?

我的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> …
Run Code Online (Sandbox Code Playgroud)

java eclipse maven spring-boot spring-boot-devtools

8
推荐指数
3
解决办法
2万
查看次数

spring-boot-devtools不会在多模块maven项目中重新加载依赖模块

在开始之前,我想说我已经尝试过spring-boot-devtools重新加载多模块maven项目更改中提出的解决方案,这对我来说不起作用.

问题:

我有一个这种类型的多模块Spring Boot项目:

在此输入图像描述

模块启动器对模块GUI具有Maven依赖性.我从启动器中的main方法启动我的Spring Boot应用程序.

当我运行应用程序并更改GUI模块中的任何HTML文件时,spring-boot-devtools依赖项不会为我正在运行的应用程序重新加载这些更改.甚至手动重启启动器都没有帮助.我需要手动编译GUI,然后再次运行启动器.

我尝试了什么:

  1. 我尝试spring-boot-devtools先在父级中 定义依赖项 pom.xml,然后仅在GUI模块中定义,然后同时在两者中定义.
  2. 我尝试按照spring-boot-devtools重新加载多模块maven项目更改的建议添加spring.devtools.restart.additional-paths=../gui我的application.properties文件.这确实会触发重新加载(根据日志),但这些更改不会传播到GUI依赖项的文件.此外,在我将这个项目变成多模块之前,不需要因为HTML文件(没有编译任何东西)而重新加载,我可以立即看到更改.jar

我使用Netbeans GUI,如果有任何帮助的话.我也试过从命令行运行项目,没有成功.所有模块上的Maven包装都设置为jar.

spring spring-boot spring-boot-devtools

8
推荐指数
2
解决办法
699
查看次数

从方法引用的java.lang.IllegalArgumentException在类加载器中不可见

当通过/ target / class / .....中的wsimport为WS服务生成存根时,并使用devtools运行spring boot应用程序时,我获得了异常。

由以下原因引起:java.lang.IllegalArgumentException:com ....在类加载器中看不到方法引用的服务

我发现spring devtools类加载器RestartClassLoader出现问题,因为对类的两个不同引用(RestartClassLoader和AppClassLoader

private static void ensureVisible(ClassLoader ld, Class<?> c) {
    Class<?> type = null;
    try {
        type = Class.forName(c.getName(), false, ld);
    } catch (ClassNotFoundException e) {
        if (type != c) {
            throw new IllegalArgumentException(c.getName() +
                    " referenced from a method is not visible from class loader");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我试图在spring-devtools.properties中添加对jar文件的引用以重新启动.include = / ..... jar

Spring Boot 2.0.0.RELEASE Java 9

java spring-boot spring-boot-devtools

8
推荐指数
1
解决办法
1682
查看次数

Spring Boot 开发人员工具自动重启在 IntelliJ 中不起作用

最近在 IntelliJ 中使用 spring-boot-devtools 启动了 spring-boot,并花了几个小时试图弄清楚为什么 IntelliJ 不会接受我的更改并自动重启嵌入式 tomcat。

此链接中的信息也没有帮助:https : //dzone.com/articles/spring-boot-application-live-reload-hot-swap-with

java spring intellij-idea spring-boot spring-boot-devtools

8
推荐指数
2
解决办法
3842
查看次数

如何修复“在加载程序'app'的未命名模块中”;与hibernate.load

我尝试在休眠状态下按ID加载实体后出现以下错误

Course is in unnamed module of loader 'app';
Run Code Online (Sandbox Code Playgroud)

这是我的休眠加载代码的示例:

 Course temp = (Course) currentSession.load(Course.class, cid);
Run Code Online (Sandbox Code Playgroud)

PS:如果重要的话,我有thymeleaf和Java 11

重要提示:我正在使用spring-boot-devtools如果我从maven删除devtools,一切正常

hibernate spring-boot spring-boot-devtools

8
推荐指数
1
解决办法
2246
查看次数

Spring-Boot-Devtools不想重新加载进程(没有选择正确的类路径?)

我有一个小的Spring Boot项目(来自spring-boot-starter).所有配置,我想使用Spring-Boot-Devtools进行自动重新加载.当我从我的git repo工作目录启动我的项目(mvn spring-boot:run -X)时,我可以看到:

maven日志:

DEBUG]分叉进程的类路径:C:\ Users\razor\git\spring-boot-starter\target\classes; ........

没关系,路径看起来不错.然后应用日志:

2016-09-21 23:47:59.568 DEBUG 13528 --- [restartedMain] .blClasspathLoggingApplicationListener:应用程序以classpath启动:[]

classpath为空?可能这是Devtools不想自动重新加载我的应用程序的问题.但为什么 ?

当我将项目文件夹(没有其他改动!!!)复制到其他地方时,重新加载工作!

Maven(mvn spring-boot:run -X):

[DEBUG]分叉进程的类路径:C:\ Java\workspace_rentit\spring-boot-starter2\target\classes; .....

然后:

2016-09-21 23:40:34.224 DEBUG 4060 --- [restartedMain] .blClasspathLoggingApplicationListener:应用程序以classpath [file:/ C:/ Java/workspace_rentit/spring-boot-starter2/target/classes /]启动

为什么会有差异?怎么了 ?在第二种情况下,重新加载工程.

spring reload maven spring-boot spring-boot-devtools

7
推荐指数
2
解决办法
3939
查看次数

配置 spring-devtools.properties 时,Spring Boot devtools Livereload 服务器未启动

我在本地环境中的 eclipse 上的嵌入式 tomcat 服务器上运行 spring boot 应用程序,并启用了 spring 开发工具。而且我还在应用程序中配置了 spring web flow。以下是版本详情。

Spring Boot 1.5.3.RELEASE
Spring Web Flow 2.4.4.RELEASE
Run Code Online (Sandbox Code Playgroud)

开发工具的 pom 配置为

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <optional>true</optional>
    <scope>runtime</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)

我在资源下的“application.properties”中用于 livereload 和重新启动的 devtools 配置是

spring.devtools.livereload.enabled=true
spring.devtools.restart.additional-exclude=/webapp/**,WEB-INF/view/**
spring.devtools.restart.enabled=true
Run Code Online (Sandbox Code Playgroud)

设置上述属性后,livereload 和自动重启工作没有任何问题。但是 spring-webflow 相关的功能在应用程序中不起作用。

由于已知问题 spring-dev-tools 和 spring-web-flow 不能很好地发挥作用,我不得不将此属性作为解决方法修复在 /resources/META-INF 下的“spring-devtools.properties”文件中如下所示。

restart.include.spring=/spring-[\\s\\S]+\.jar
Run Code Online (Sandbox Code Playgroud)

此属性修复了 spring-web-flow 问题,但 livereload 服务器未启动。服务器控制台日志也没有显示它已经在某某端口上启动了 livereload 服务器。

我无法确定导致此问题的原因。

任何人都可以帮忙吗?

更新: 我似乎无法完成这项工作。我认为上面提到的解决方法是在 Restart Classloader 中包含 dev-tools 类,从而阻止 livereload 服务器启动。

如果我错了,请纠正我。

livereload spring-boot spring-boot-devtools

7
推荐指数
1
解决办法
2116
查看次数

Spring boot - 以交互模式运行集成测试

在开发 Web 应用程序时,SpringBoot 开发工具模块可以方便地加快编译和运行循环。但是,我找不到集成测试的任何类似功能。

更具体地说,假设我有一个集成测试(用@RunWith(SpringRunner.class)和注释@SpringBootTest),它在随机端口上启动一个 Web 服务器并测试一些 REST 端点。我想要一个交互式测试运行器,它不会在测试用例失败时终止进程。相反,它将等待代码中的更改,并在检测到更改时重新加载并重新运行测试(就像开发工具中的热交换一样)

我对此功能的搜索没有成功,因此我想知道实现此功能的最快方法是什么。考虑到 Springs 的流行,是否有一种广为人知的方式来做到这一点?

编辑

在源代码中挖掘了一点,我发现了以下代码段。

/**
 * Default {@link RestartInitializer} that only enable initial restart when running a
 * standard "main" method. Skips initialization when running "fat" jars (included
 * exploded) or when running from a test.
 *
 * @author Phillip Webb
 * @author Andy Wilkinson
 * @since 1.3.0
 */
public class DefaultRestartInitializer implements RestartInitializer {

    private static final Set<String> SKIPPED_STACK_ELEMENTS;

    static {
        Set<String> skipped = new …
Run Code Online (Sandbox Code Playgroud)

java spring hotswap spring-boot spring-boot-devtools

7
推荐指数
1
解决办法
205
查看次数

Gradle Spring Boot Devtools:developmentOnly 和 runtimeClasspath

我对在开发工具上gradleSpring Boot 文档建议的文件中使用的这段代码感到困惑

configurations {
    developmentOnly
    runtimeClasspath {
        extendsFrom developmentOnly
    }
}
dependencies {
    developmentOnly("org.springframework.boot:spring-boot-devtools")
}
Run Code Online (Sandbox Code Playgroud)

我想我必须声明developmentOnly配置,因为它要在dependencies {}块中使用,但为什么我需要这些行runtimeClasspath?我实际上尝试删除我的项目中的行,并且该项目构建得非常好。

configurations {
    developmentOnly
}
dependencies {
    developmentOnly("org.springframework.boot:spring-boot-devtools")
}
Run Code Online (Sandbox Code Playgroud)

是否runtimeClasspath被 Java Plugin 使用?(正如本文档所建议的)如果我不包含这些行,会不会有任何不好的副作用runtimeClasspath

更新 (2019-12-10)

我还可以确认在没有runtimeClasspath指令的情况下构建的可执行 jar运行完全正常。所以我真的不知道该指令在做什么。

java gradle spring-boot gradle-plugin spring-boot-devtools

7
推荐指数
1
解决办法
5237
查看次数

为什么 spring boot devtools 两次调用 main 方法?

我在我的项目中使用 spring boot devtools。当我写

System.out.println("test");
Run Code Online (Sandbox Code Playgroud)

在 main 之前,它在控制台中打印两次。

public static void main(String[] args) {

    System.out.println("test");
    SpringApplication.run(TestApplication.class, args);
}
Run Code Online (Sandbox Code Playgroud)

当我删除

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
</dependency>
Run Code Online (Sandbox Code Playgroud)

在 pom.xml 文件中,它打印一次

spring-boot spring-boot-devtools

6
推荐指数
1
解决办法
832
查看次数