See this question on Stack Overflow for some background.

At the moment, if a Spring Boot jar has multi-release content, it's packaged in /META-INF/versions. For it to be loaded by the launcher's class loader it needs to be packaged in /BOOT-INF/classes/META-INF/versions. Maven can be manually configured to put the classes in the right place but it feels like something that we should be able to do for users automatically.

We should also check how things work with Gradle and make equivalent improvements there as well if needed.

Comment From: aakejiang

good point