diff --git a/spring-boot-cli/src/main/java/org/springframework/boot/cli/SpringCli.java b/spring-boot-cli/src/main/java/org/springframework/boot/cli/SpringCli.java index 81c5c198bb..7fd33b8922 100644 --- a/spring-boot-cli/src/main/java/org/springframework/boot/cli/SpringCli.java +++ b/spring-boot-cli/src/main/java/org/springframework/boot/cli/SpringCli.java @@ -31,6 +31,7 @@ import org.springframework.boot.cli.command.core.HintCommand; import org.springframework.boot.cli.command.core.VersionCommand; import org.springframework.boot.cli.command.shell.ShellCommand; import org.springframework.boot.loader.tools.LogbackInitializer; +import org.springframework.util.ClassUtils; import org.springframework.util.SystemPropertyUtils; /** @@ -51,6 +52,7 @@ public final class SpringCli { LogbackInitializer.initialize(); CommandRunner runner = new CommandRunner("spring"); + ClassUtils.overrideThreadContextClassLoader(createExtendedClassLoader(runner)); runner.addCommand(new HelpCommand(runner)); addServiceLoaderCommands(runner); runner.addCommand(new ShellCommand()); @@ -66,14 +68,14 @@ public final class SpringCli { } private static void addServiceLoaderCommands(CommandRunner runner) { - ServiceLoader factories = ServiceLoader.load(CommandFactory.class, - createCommandClassLoader(runner)); + ServiceLoader factories = ServiceLoader + .load(CommandFactory.class); for (CommandFactory factory : factories) { runner.addCommands(factory.getCommands()); } } - private static URLClassLoader createCommandClassLoader(CommandRunner runner) { + private static URLClassLoader createExtendedClassLoader(CommandRunner runner) { return new URLClassLoader(getExtensionURLs(), runner.getClass().getClassLoader()); }