使用Spring Boot LayerTools模式时找不到Jarlauncher

问题描述 投票:0回答:2

我使用

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

为什么会出现这个错误?

java spring-boot gradle jar executable-jar
2个回答
5
投票

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

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

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


0
投票

如果您最近更新到 Spring Boot 3,则必须将包名称更改为:

org.springframework.boot.loader.JarLauncher

至:

org.springframework.boot.loader.launch.JarLauncher

© www.soinside.com 2019 - 2024. All rights reserved.