如何从分层Jar目录启动Spring Boot应用?
直接启动Spring Boot分层Jar拆分后的目录结构
要直接通过拆分后的四个目录启动应用,核心是利用Spring Boot自带的JarLauncher加载器,它能识别分层结构并正确加载所有依赖和应用代码。以下是具体操作方案:
前提条件
确保application、dependencies、snapshot-dependencies、spring-boot-loader四个目录位于同一父目录下,且终端当前工作目录为该父目录。
启动命令
Linux/macOS系统
java -cp "spring-boot-loader/*.jar:dependencies/*.jar:snapshot-dependencies/*.jar:application" org.springframework.boot.loader.JarLauncher
Windows系统
java -cp "spring-boot-loader\*.jar;dependencies\*.jar;snapshot-dependencies\*.jar;application" org.springframework.boot.loader.JarLauncher
命令说明
-cp(或-classpath)指定类加载路径,涵盖所有必要资源:spring-boot-loader/*.jar:加载Spring Boot启动加载器核心Jar,负责处理分层结构的类加载逻辑。dependencies/*.jar&snapshot-dependencies/*.jar:包含应用所有第三方稳定依赖与快照依赖Jar。application:包含你的应用代码、配置文件及专属资源,加载器会自动识别其中的BOOT-INF/classes等约定结构。
特殊场景处理
如果application目录下还存在应用专属的依赖Jar(比如BOOT-INF/lib目录下的文件),需将该路径补充到类路径中:
Linux/macOS调整后命令
java -cp "spring-boot-loader/*.jar:dependencies/*.jar:snapshot-dependencies/*.jar:application:application/BOOT-INF/lib/*.jar" org.springframework.boot.loader.JarLauncher
Windows调整后命令
java -cp "spring-boot-loader\*.jar;dependencies\*.jar;snapshot-dependencies\*.jar;application;application\BOOT-INF\lib\*.jar" org.springframework.boot.loader.JarLauncher
启动验证
执行命令后,若控制台输出Spring Boot启动日志,说明应用已成功启动。若出现类找不到的错误,检查类路径是否包含所有必要的Jar和目录。
内容的提问来源于stack exchange,提问作者chris01
相关产品推荐
相关产品推荐

