gpt4 book ai didi

java - Play Framework (2.4)、sbt (0.13.17) 的热重载以及整个项目完全重新编译的原因

转载 作者:行者123 更新时间:2023-12-02 01:29:22 25 4
gpt4 key购买 nike

我的 Web 应用程序项目及其内部依赖项目前似乎存在问题:如果我修改某些类的公共(public)非静态 Java 方法的主体,我的整个项目将被重新编译。这极大地浪费了我的时间,我该如何调试并修复它?

如果可能的话,我希望 sbt 告诉我增量编译依赖关系树(即:修改“myMethod”触发重新编译类 A1 和 B1,重新编译 A 触发重新编译 A2,重新编译 B1 触发重新编译 B2,等等。这可能会给我一些线索。这真的存在吗?

最佳答案

当更改/修改代码导致重新编译时,Play 框架没有任何问题。这基本上是 Play 框架的一个功能,称为“热重载”。

现在来到问题的第二部分,您需要了解 Play 热重载的工作原理

假设您的 Play 服务器正在运行并且您进行了代码更改。然后执行以下步骤

  1. 它会编译您的类文件并检查是否有任何编译问题。
  2. 然后编译剩余代码以检查新代码更改是否破坏了代码的任何其他部分。
  3. 如果有任何编译问题,将会抛出异常。
  4. 假设编译成功,我们需要更新JVM中加载的类。为此,我们只需删除旧的应用程序类加载器,并使用更新的类创建一个新的应用程序类加载器。
  5. Play 应用程序已重新启动。

总而言之,play 框架会丢弃旧的类加载器,并使用更新的类创建一个新的类加载器,因此会再次重新编译完整的项目。

希望能回答您的问题!!!

关于java - Play Framework (2.4)、sbt (0.13.17) 的热重载以及整个项目完全重新编译的原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56358052/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com