无法在 jrebel 中重新加载某些 类

Can't reload certain classes in jrebel

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

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

有些 class 可以重新加载。

其他 classes 根本不重新加载。 (通常在与 class 相同的 gradle 子项目中重新加载 OK)

他们不想重新加载没有任何韵律或理由。 classes 并没有什么特别之处。不会太长。

我们使用 Guice...但是一些由 Guice 管理的文件可以正常重新加载,而另一些则不能。

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

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

请注意,不会重新加载的问题 class 通常是接口的实现,如果我更改实现,则不会重新加载。但是,如果我更改界面 java class,那将重新加载!

JRebel 特别不喜欢 Java class 文件。

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

有没有办法阻止这种情况发生?

由于延迟加载,class 尚未在 class 加载程序中。这样的问题。

JRebel 无法重新加载 classes 还没有在 classloader 中。