首页 > 解决方案 > jar 清单是否支持“类路径”?为什么要使用 spring-boot-loader 代替?

问题描述

我知道spring-boot-loaderSpring Boot使用BOOT-INF/lib名为.JarLauncher

读完这篇文章后,我想Class-Path在清单中也可以做到这一点。

那么为什么 spring boot 做这么多工作来从自定义加载 jars BOOT-INF/lib,而不是简单地写在META-INF/MANIFEST.MF

Class-Path: BOOT-INF/lib

标签: spring-bootmanifestspring-boot-maven-plugin

解决方案


Class-Path清单方法不支持从嵌套在 jar 中的 jar 文件加载类。从您在问题中链接到的 Oracle 文档中:

Class-Path 标头指向本地网络上的类或 JAR 文件,而不是 JAR 文件中的 JAR 文件或可通过 Internet 协议访问的类。要将 JAR 文件中的 JAR 文件中的类加载到类路径中,您必须编写自定义代码来加载这些类。例如,如果 MyJar.jar 包含另一个名为 MyUtils.jar 的 JAR 文件,则不能使用 MyJar.jar 清单中的 Class-Path 标头将 MyUtils.jar 中的类加载到类路径中。

Spring BootJarLauncher和其中的其他类spring-boot-loader是允许从嵌套在 jar 中的 jar 加载类的自定义代码。


推荐阅读