diff --git a/modules/jooby-run/src/main/java/io/jooby/run/JoobyRun.java b/modules/jooby-run/src/main/java/io/jooby/run/JoobyRun.java index eaf53853c6..12aa2fe4b6 100644 --- a/modules/jooby-run/src/main/java/io/jooby/run/JoobyRun.java +++ b/modules/jooby-run/src/main/java/io/jooby/run/JoobyRun.java @@ -435,7 +435,8 @@ private synchronized void actualRestart() { var unload = false; Supplier compileTask = null; for (; e != null && (t - e.time) > waitTimeBeforeRestartMillis; e = queue.peek()) { - unload = unload || options.isCompileExtension(e.path); + // unload on source code changes (.java, .kt) or binary changes (.class) + unload = unload || options.isCompileExtension(e.path) || options.isClass(e.path); compileTask = Optional.ofNullable(compileTask).orElse(e.compileTask); queue.poll(); } diff --git a/modules/jooby-run/src/main/java/io/jooby/run/JoobyRunOptions.java b/modules/jooby-run/src/main/java/io/jooby/run/JoobyRunOptions.java index e29ae29dd5..a48ff0273e 100644 --- a/modules/jooby-run/src/main/java/io/jooby/run/JoobyRunOptions.java +++ b/modules/jooby-run/src/main/java/io/jooby/run/JoobyRunOptions.java @@ -171,6 +171,10 @@ public boolean isCompileExtension(Path path) { return containsExtension(compileExtensions, path); } + public boolean isClass(Path path) { + return containsExtension(List.of("class"), path); + } + /** * Test if the given path matches a restart extension. *