此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Boot 3.3.4! |
此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Boot 3.3.4! |
用于支持加载嵌套 jar 的核心类是 。
它允许您从嵌套的子 jar 数据加载 jar 内容。
首次加载时,每个 jar 的位置都映射到外部 jar 的物理文件偏移量,如以下示例所示:org.springframework.boot.loader.jar.NestedJarFile
JarEntry
myapp.jar
+-------------------+-------------------------+
| /BOOT-INF/classes | /BOOT-INF/lib/mylib.jar |
|+-----------------+||+-----------+----------+|
|| A.class ||| B.class | C.class ||
|+-----------------+||+-----------+----------+|
+-------------------+-------------------------+
^ ^ ^
0063 3452 3980
前面的示例显示了如何在 at 位置 中找到。 从嵌套的 jar 中实际上可以在 at position 中找到,并且位于 at position 。A.class
/BOOT-INF/classes
myapp.jar
0063
B.class
myapp.jar
3452
C.class
3980
有了这些信息,我们可以通过查找外部 jar 的适当部分来加载特定的嵌套条目。 我们不需要解压缩存档,也不需要将所有 entry 数据读入内存。
与标准 Java “JarFile” 的兼容性
Spring Boot Loader 努力保持与现有代码和库的兼容性。 扩展自 和 应该作为直接替代品。org.springframework.boot.loader.jar.NestedJarFile
java.util.jar.JarFile
支持表单的嵌套 JAR URL,并打开与 兼容的连接。
这些可以与 Java 的 .jar:nested:/path/myjar.jar/!BOOT-INF/lib/mylib.jar!/B.class
java.net.JarURLConnection
URLClassLoader