【问题标题】:Can't reload certain classes in jrebel无法在 jrebel 中重新加载某些类
【发布时间】:2018-02-21 03:13:02
【问题描述】:

我正在使用 JRebel + Intellij JRebel IDE 插件来热部署一个 gradle 项目。

我遇到了 JRebel 的情况,其中 JRebel 拒绝让我热部署某些 Java 类。

有些类可以很好地重新加载。

其他类根本不会重新加载。 (通常与重新加载的类在同一个 gradle 子项目中)

他们不想重新加载没有理由或理由。这些课程并没有什么特别之处。不会太长。

我们使用 Guice...但是一些由 Guice 管理的文件可以很好地重新加载,而其他文件则不能。

这使得 JRebel 几乎无法使用,因为您无法相信它是否会热部署。

我为我们的项目创建了一个自定义 JRebel 插件,希望它会有所帮助,但它没有。因为类本身不会触发重新加载事件,所以插件无法帮助解决这个问题。

请注意,不会重新加载的类通常是接口的实现,如果我更改实现,则不会发生重新加载。但是如果我更改接口 java 类,那将重新加载正常!

JRebel 特别不喜欢 Java 类文件。

当我构建它不会拾取的文件时,您甚至可以在 IDE 中看到,并且 100% 的时间都可以看到我得到的这些文件:

有什么办法让这种情况停止发生吗?

【问题讨论】:

  • 在重现问题后发送电子邮件至 support@zeroturnaround.com,并提供跟踪级别的 jrebel.log。有关如何创建和查找日志文件的信息,请参阅 the manual
  • 好的,已经完成了,只是打开它以防它产生任何想法

标签: jrebel


【解决方案1】:

由于延迟加载,该类尚未在类加载器中。因此问题。

JRebel 无法重新加载尚未在类加载器中的类。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-19
    • 1970-01-01
    • 1970-01-01
    • 2013-07-28
    • 2017-09-22
    • 1970-01-01
    相关资源
    最近更新 更多