Possibility to create modular jars out of old non-modular ones

Alex Buckley alex.buckley at oracle.com
Thu Sep 8 18:55:11 UTC 2016


On 9/8/2016 6:11 AM, Waldek Kozaczuk wrote:
> Imagine you have pre-jigsaw jar like log4j 1.x that happens to depend on
> java.awt.* and swing (it does in fact) but I know for a fact my app does
> not use this part of it.
>
> Would it be possible to create a modular jar out of non-modular by simply
> repackaging it and adding module-info.java that specifies what specifically
> my app depends on (is exposed in log4j jar)

Yes. By all means, add module-info.class to your app JAR.

The following thread from August will be helpful if you want to compile 
just module-info.java for JDK 9: 
http://mail.openjdk.java.net/pipermail/jigsaw-dev/2016-August/009177.html

> and what that log4j in my case "requires" from Java 9 in terms of
> modules?

The module-info.class file in your app JAR is the declaration of your 
application module. It can't contain dependencies for some other module. 
If you want your application module to say 'requires log4j', then your 
choices are to put log4j on the modulepath as an automatic module, or to 
find a version of log4j that is already a modular JAR.

Alex


More information about the jigsaw-dev mailing list