Can jdeps resolve unnecessary dependencies?

Mandy Chung mandy.chung at
Wed Sep 7 21:03:27 UTC 2016

> On Sep 7, 2016, at 8:07 AM, Sander Mak <sander.mak at> wrote:
>> On 07 Sep 2016, at 16:12, Waldek Kozaczuk <jwkozaczuk at> wrote:
>> Will I be able to take advantage of jlink's ability to produce subset-only
>> image of the JRE even if I do not use new Java 9 modular jars? In other
>> words if my app.jar and other dependent jars are old java 8 ones and do not
>> have any module descriptors will jlink be able to identify only needed JRE
>> modules and produce minimal runtime image?
> Jlink will not be able to do that for you without module descriptors, but there's an alternative solution. First, use jdeps to find all the platform modules your application needs. Then create an image using jlink with an --add-modules <platform_module> argument for each of the identified platform modules. You can then run your existing application with all application/library JARs on the classpath on top of the resulting image.

As Sander said, jlink creates custom image from packaged modules only. You can create a minimal runtime image and your application and other libraries can be put on the classpath.

The open issue of adding link-time support for automatic modules is JDK-8139947 [1].


More information about the jigsaw-dev mailing list