跳到主要内容

启动可执行 Jars

DeepSeek V3 中英对照 Launching Executable Jars

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

有三种启动器子类(JarLauncherWarLauncherPropertiesLauncher)。它们的目的是从嵌套的 jar 文件或目录中的 war 文件中加载资源(如 .class 文件等),而不是从显式在类路径中的文件加载。对于 JarLauncherWarLauncher,嵌套路径是固定的。JarLauncher 会查找 BOOT-INF/lib/,而 WarLauncher 会查找 WEB-INF/lib/WEB-INF/lib-provided/。如果你需要更多 jar 包,可以在这些位置添加额外的 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
manifest

对于一个 war 文件,它将如下所示:

Main-Class: org.springframework.boot.loader.launch.WarLauncher
Start-Class: com.mycompany.project.MyApplication
manifest
备注

你无需在清单文件中指定 Class-Path 条目。类路径是从嵌套的 jar 文件中推导出来的。