尝试在分层 Docker 中部署Spring Boot 3.2应用程序时,我基本上遵循了这篇博文,具体来说,我的 Docker 入口点是:
ENTRYPOINT ["java", "org.springframework.boot.loader.JarLauncher"]
Run Code Online (Sandbox Code Playgroud)
然而 docker 没有启动并显示通常的内容
Error: Could not find or load main class org.springframework.boot.loader.JarLauncher
Caused by: java.lang.ClassNotFoundException: org.springframework.boot.loader.JarLauncher
Run Code Online (Sandbox Code Playgroud)
在对初始 jar 文件进行一番挖掘后,我发现 JarLauncher 类实际上位于org.springframework.boot.loader.launch.JarLauncher.
如果我用这个替换入口点:
ENTRYPOINT ["java", "org.springframework.boot.loader.launch.JarLauncher"]
Run Code Online (Sandbox Code Playgroud)
该应用程序实际上启动了。
跳回到Spring 文档中,包应该仍然是org.springframework.boot.loader.JarLauncher(根据文档,我的意思是)
那么... JarLauncher 类是否已被移动,并且文档已过时,或者是我的配置中存在错误?因为我找不到任何有关此更改的文档(女巫似乎相当重要)
当然,java -jar由于清单文件没问题,通常的命令可以正确运行。
我通过使用 Spring Boot 2.7 启动一个新项目进行了双重检查,JarLauncher 类确实在包org.springframework.boot.loader中