jar manifest支持' Class-Path '吗?为什么要使用spring引导加载程序呢?



我知道spring引导用spring-boot-loader打包了一个可执行的jar文件,并使用一个名为JarLauncher的类从BOOT-INF/lib加载了其他jar文件。

看完这篇文章,我在想Class-Path在manifest中也可以做到这一点。

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

Class-Path: BOOT-INF/lib

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

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

Spring Boot的JarLauncherspring-boot-loader中的其他类是自定义代码,允许从一个jar中嵌套的jar中加载类。

相关内容

  • 没有找到相关文章

最新更新