启动可执行Jar
Launcher 类是一个特殊的引导类,用作可执行 jar 的主入口点。
它实际上是 jar 文件中的 Main-Class,用于设置合适的 ClassLoader,最终调用你的 main() 方法。
有三个 launcher 子类(JarLauncher、WarLauncher 和 PropertiesLauncher)。
它们的作用是从嵌套 jar 文件或目录中的 war 文件加载资源(如 .class 文件等),而不是仅从 classpath 上显式指定的位置加载。
对于 JarLauncher 和 WarLauncher,嵌套路径是固定的。
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.MF 的 Main-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 自动推断。
|