启动可执行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 自动推断。
|