启动可执行Jar

Launcher 类是一个特殊的引导类,用作可执行 jar 的主入口点。 它实际上是 jar 文件中的 Main-Class,用于设置合适的 ClassLoader,最终调用你的 main() 方法。

有三个 launcher 子类(JarLauncherWarLauncherPropertiesLauncher)。 它们的作用是从嵌套 jar 文件或目录中的 war 文件加载资源(如 .class 文件等),而不是仅从 classpath 上显式指定的位置加载。 对于 JarLauncherWarLauncher,嵌套路径是固定的。 JarLauncher 查找 BOOT-INF/lib/WarLauncher 查找 WEB-INF/lib/WEB-INF/lib-provided/。 你可以在这些位置添加额外的 jar。

PropertiesLauncher 默认会在应用归档的 BOOT-INF/lib/ 中查找。 你可以通过设置名为 LOADER_PATH 的环境变量,或在 loader.properties 中设置 loader.path(逗号分隔的目录、归档或归档内目录列表)来添加额外位置。

启动器清单

你需要在 META-INF/MANIFEST.MFMain-Class 属性中指定合适的 Launcher。 实际需要启动的类(即包含 main 方法的类)应在 Start-Class 属性中指定。

以下示例展示了可执行 jar 文件的典型 MANIFEST.MF

Main-Class: org.springframework.boot.loader.launch.JarLauncher
Start-Class: com.mycompany.project.MyApplication

对于 war 文件,配置如下:

Main-Class: org.springframework.boot.loader.launch.WarLauncher
Start-Class: com.mycompany.project.MyApplication
你无需在清单文件中指定 Class-Path 条目。 classpath 会根据嵌套 jar 自动推断。