On Tue, 10 Dec 2024 17:14:32 GMT, Mandy Chung <mch...@openjdk.org> wrote:

> Can you clarify how `jdk.jpackage` and `jdk.jlink` are included in 
> `ALL-DEFAULT`? They do not have unqualified exports and hence they are not in 
> the default set of root modules. They are service providers of 
> `ToolProvider`. However, JEP 392 https://openjdk.org/jeps/392#Runtime-images 
> specifies that `jpackage` by default does not include `--bind-services`.

@mlchung Let me try to answer this.

When a user executes a `jpackage` command like this:


jpackage --dest test/output2 --name JLinkOptionsTest --input test/input --type 
app-image --module-path ./test/input --main-jar hello.jar --main-class 
com.other.Hello


Then `JLinkBundlerHelper` is involved and is being called with set `{ 
ALL-DEFAULT }` in 
[JLinkBundlerHelper.createModuleList()](https://github.com/openjdk/jdk/blob/266e3d0decc09b9c17c455e2c754cd39114fa31a/src/jdk.jpackage/share/classes/jdk/jpackage/internal/JLinkBundlerHelper.java#L126-L155)
 as the `addModules` argument.

This method, in turn, calls `JLinkBundlerHelper.getDefaultModules()` which uses 
`Configuration.empty().resolveAndBind()` which performs the service binding. 
This pulls in `jdk.jlink`.

-------------

PR Comment: https://git.openjdk.org/jdk/pull/22644#issuecomment-2541788506

Reply via email to