此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Boot 3.3.1Spring中文文档

此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Boot 3.3.1Spring中文文档

用于支持加载嵌套 jar 的核心类是 。 它允许您从嵌套的子 jar 数据加载 jar 内容。 首次加载时,每个位置都映射到外部 jar 的物理文件偏移量,如以下示例所示:org.springframework.boot.loader.jar.NestedJarFileJarEntrySpring中文文档

myapp.jar
+-------------------+-------------------------+
| /BOOT-INF/classes | /BOOT-INF/lib/mylib.jar |
|+-----------------+||+-----------+----------+|
||     A.class      |||  B.class  |  C.class ||
|+-----------------+||+-----------+----------+|
+-------------------+-------------------------+
 ^                    ^           ^
 0063                 3452        3980

前面的示例显示了如何在 at 位置中找到 。 从嵌套的 jar 中实际上可以找到 at 位置 和 is at 位置。A.class/BOOT-INF/classesmyapp.jar0063B.classmyapp.jar3452C.class3980Spring中文文档

有了这些信息,我们就可以通过寻找外部 jar 的适当部分来加载特定的嵌套条目。 我们不需要解压缩存档,也不需要将所有条目数据读取到内存中。Spring中文文档

与标准 Java“JarFile”的兼容性

Spring Boot Loader 努力保持与现有代码和库的兼容性。 从扩展而来,应该作为直接替代品。org.springframework.boot.loader.jar.NestedJarFilejava.util.jar.JarFileSpring中文文档

支持表单的嵌套 JAR URL,并打开与 兼容的连接。 这些可以与 Java 的 .jar:nested:/path/myjar.jar/!BOOT-INF/lib/mylib.jar!/B.classjava.net.JarURLConnectionURLClassLoaderSpring中文文档