这是我得到的错误 -
Caused by: java.lang.NoClassDefFoundError: org/springframework/boot/SpringApplication
如果我取出layoutFactory选项,我就可以启动启动应用程序。
在build.gradle
我有
springBoot {
mainClass = "com.mycompany.Application"
layoutFactory = new CustomLayoutFactory()
}
class CustomLayoutFactory implements LayoutFactory {
@Override
Layout getLayout(File source) {
if (source?.getName().toLowerCase().endsWith('.jar')) {
return new Layouts.Jar() {
@Override
public String getLibraryDestination(String libraryName, LibraryScope scope) {
return "lib/";
}
@Override
public String getRepackagedClassesLocation() {
return "";
}
};
}
return Layouts.forFile(source);
}
答案 0 :(得分:1)
您正在使用自定义jar布局,在lib
而不是BOOT-INF/lib
中打包嵌套的jar,但据我所知,您仍在使用Spring Boot的JarLauncher
来自Spring Boot的默认加载器,期望在BOOT-INF/lib
中找到jar。
您需要实现CustomLoaderLayout
并在jar的根目录中提供您自己的加载器类,这些类知道要查看lib
而不是BOOT-INF/lib
。