使用 spring 引导层工具模式时未找到 Jarlauncher

Jarlauncher was not found when using spring boot layertools mode

我使用 layertools jar 模式提取了我的应用构建文件。 (参考 https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#container-images.dockerfiles

结果提取出四个文件如下

application
dependencies
snapshot-dependencies
spring-boot-loader

然后,在同一目录中,我尝试通过执行以下命令 运行 应用程序:

$java org.springframework.boot.loader.JarLauncher

但是,出现了错误。

java.lang.ClassNotFoundException: org.springframework.boot.loader.JarLauncher

MANIFEST.MF如下

Manifest-Version: 1.0
Main-Class: org.springframework.boot.loader.JarLauncher
Start-Class: com.henry.myproject.HelloApplicationKt
Spring-Boot-Version: 2.6.4
Spring-Boot-Classes: BOOT-INF/classes/
Spring-Boot-Lib: BOOT-INF/lib/
Spring-Boot-Classpath-Index: BOOT-INF/classpath.idx
Spring-Boot-Layers-Index: BOOT-INF/layers.idx

为什么会出现这个错误?

四个目录中的每一个都旨在用作 Docker 图像中的单独层。它们需要被复制到一个目录中。在 Docker 文件中,它看起来像这样:

COPY --from=builder application/dependencies/ ./
COPY --from=builder application/spring-boot-loader/ ./
COPY --from=builder application/snapshot-dependencies/ ./
COPY --from=builder application/application/ ./

然后可以从图层复制到的目录启动应用程序。