We have various hot-reload issues whose root cause is JAR files not being closed during hot-reload.
If there is an InputStream from a JAR file resource that is not closed correctly (leaked), the JAR file stays open, and in turn the sun.net.www.protocol.jar JarFileFactory caches used by sun.net.www.protocol.jar.JarURLConnection are not being released. This causes subsequent references to a new version of the JAR file at the same location to not be read, because the old one is still in cache.
The solution is to properly close the ClassLoader from which these JAR file resources are read.