MANIFEST.MF: Main-Class 和 Start-Class 的区别

MANIFEST.MF: difference between Main-Class and Start-Class

在我接手的一个项目中,我发现了一个包含以下MANIFEST.MF文件的Jar文件:

Manifest-Version: 1.0
Start-Class: com.xxx.Application
Spring-Boot-Version: 1.2.7.RELEASE
Main-Class: org.springframework.boot.loader.JarLauncher

Start-Class和Main-Class有什么区别?

这是 Spring Boot 的一个特性。 Main-Class 定义 Spring Boot 的 org.springframework.boot.loader.JarLauncher class 将在第一步启动。

在第二步中,org.springframework.boot.loader.JarLauncher 将启动 class 的 main 方法,该方法提供给 Start-Class 属性 - 在这种情况下, com.xxx.Application.

详情见https://docs.spring.io/spring-boot/docs/current/reference/html/executable-jar.html