This involved a small code change to the generated configuration properties snippets. The section id has to start with 'appendix.', otherwise the section-id asciidoctor extension complains. To ensure that the anchors that are derived from the section IDs remain backwards compatible, the anchor-rewrite properties have been updated. See gh-29667
39 lines
1.9 KiB
Plaintext
39 lines
1.9 KiB
Plaintext
[[appendix.executable-jar.launching]]
|
|
== Launching Executable Jars
|
|
The `org.springframework.boot.loader.Launcher` class is a special bootstrap class that is used as an executable jar's main entry point.
|
|
It is the actual `Main-Class` in your jar file, and it is used to setup an appropriate `URLClassLoader` and ultimately call your `main()` method.
|
|
|
|
There are three launcher subclasses (`JarLauncher`, `WarLauncher`, and `PropertiesLauncher`).
|
|
Their purpose is to load resources (`.class` files and so on) from nested jar files or war files in directories (as opposed to those explicitly on the classpath).
|
|
In the case of `JarLauncher` and `WarLauncher`, the nested paths are fixed.
|
|
`JarLauncher` looks in `BOOT-INF/lib/`, and `WarLauncher` looks in `WEB-INF/lib/` and `WEB-INF/lib-provided/`.
|
|
You can add extra jars in those locations if you want more.
|
|
The `PropertiesLauncher` looks in `BOOT-INF/lib/` in your application archive by default.
|
|
You can add additional locations by setting an environment variable called `LOADER_PATH` or `loader.path` in `loader.properties` (which is a comma-separated list of directories, archives, or directories within archives).
|
|
|
|
|
|
|
|
[[appendix.executable-jar.launching.manifest]]
|
|
=== Launcher Manifest
|
|
You need to specify an appropriate `Launcher` as the `Main-Class` attribute of `META-INF/MANIFEST.MF`.
|
|
The actual class that you want to launch (that is, the class that contains a `main` method) should be specified in the `Start-Class` attribute.
|
|
|
|
The following example shows a typical `MANIFEST.MF` for an executable jar file:
|
|
|
|
[indent=0]
|
|
----
|
|
Main-Class: org.springframework.boot.loader.JarLauncher
|
|
Start-Class: com.mycompany.project.MyApplication
|
|
----
|
|
|
|
For a war file, it would be as follows:
|
|
|
|
[indent=0]
|
|
----
|
|
Main-Class: org.springframework.boot.loader.WarLauncher
|
|
Start-Class: com.mycompany.project.MyApplication
|
|
----
|
|
|
|
NOTE: You need not specify `Class-Path` entries in your manifest file.
|
|
The classpath is deduced from the nested jars.
|