当前位置: 首页 > 知识库问答 >
问题:

Quarkus热替换不适用于构造函数中的代码

有翰海
2023-03-14

我正在学习这个rest json教程。在使用本教程中描述的maven创建项目后,我通过以下方式在dev模式下启动quarkus:

./mvnw compile quarkus:dev

自动生成的项目带有一个示例JacksonResource类型,其中有JAX-RS注释。当我访问时http://localhost:8080/resteasy-jackson/quarks,REST api工作正常,我在浏览器中看到了json负载。

当我修改Set的元素时

这是Ubuntu 18.04。/mvnw--version生成:

Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: /home/<user-name>/.m2/wrapper/dists/apache-maven-3.6.3-bin/1iopthnavndlasol9gbrbg6bf2/apache-maven-3.6.3
Java version: 11.0.10, vendor: GraalVM Community, runtime: /usr/lib/jvm/graalvm-ce-java11-21.0.0.2
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "4.15.0-101-generic", arch: "amd64", family: "unix"

我错过了什么?

更新:看起来类型的构造函数中的代码更改没有重新加载。如果我更改了某个方法中的某些内容,则热重新加载/替换会按预期工作。我正在相应地更新问题的标题和内容。

我也不能只复制一次场景。看起来有一些边缘情况。


共有1个答案

柳韬
2023-03-14

我假设你使用Quarkus1.11或更高版本。在 1.11 中,添加了检测作为在仅更改方法主体时不执行完全重新启动的方法。

因此,我可以想象你所看到的是,你实际上并没有触发完全重启,因此你的新构造函数也没有被调用,因为它正在重用对象。会是这样吗?

如果是,并且您更喜欢完全重启以触发对象的完全重建,那么您可以设置 quarkus.dev.instrumentation=false,Quarkus不会尝试使用检测进行优化,而是完全重新启动。

如果你相信你正在创建全新的对象,那么请在https://github.com/quarkus/issues打开一个问题

 类似资料:
  • 问题内容: 我正在实现他们文档中提供的firebase示例。我遇到此错误: com.fasterxml.jackson.databind.JsonMappingException:没有为类型[简单类型,类com.XYZ。$ BlogPost]找到合适的构造函数:无法从JSON对象实例化(需要添加/启用类型信息吗?) 这是我的代码: 我在同一件事上经历了很多问题,说要包含反序列化JSON所需的空构造

  • 我的应用程序正在部署到IBM WebSphere上。我有一个简单的服务,我想知道依赖注入在这种情况下是如何工作的。 它失败,出现以下错误: [错误]CWWKZ0002E:启动应用程序my app时发生异常。例外消息是:com。国际商用机器公司ws。容器服务状态StateChangeException:com。国际商用机器公司ws。cdi。CDIException:com。国际商用机器公司wsspi

  • 我有一个DummyResources类和一个DummyTarget文件,以及一个测试类TestDummyResources,如下所示,但是mocked对象仅在我调用普通类中的构造函数时才有效,当它在匿名类中调用时,它调用实际的构造函数而不是使用mocked对象。 版本: powermock 1.4.12 mockito 1.9.0 junit 4.8.2 DummyTarget。java: Dum

  • 问题内容: 只有最后一部分(我的意思是我仅对此有问题) 当我编译它时,我没有合适的构造函数错误。为什么是这样??顺便说一下,Spirtokouto类的目的是要增加一个计数值(权重)。我可以将一个班级扩展到> 1个班级吗? 问题答案: Box类有两个构造函数:,但它们都不带四个参数,而您要用四个参数来调用它,因此请更改此参数: 对此: 调用必须首先在构造函数中进行。 我可以将一个班级扩展到 > 1个