打包后的springbootjar包中实际上包含了所有的第三方依赖包,所以是一个包含jar包的jar包,而java默认的Launcher.AppClassLoader无法加载这种jar in jar的jar包,所以springboot使用的是LaunchedURLClassLoader来加载类,而ClassLoader.getSystemClassLoader()返回的是系统(应用)类加载器-即AppClassLoader,自然找不到被打包到BOOT-INF/lib/xx.jar里面的class文件,所以换成Xx.class.getClassLoader()或者Spring提供的ClassUtils.getDefaultClassLoader()。