Jlink and automatic module
pbenedict at apache.org
Mon Jul 11 02:26:07 UTC 2016
Should this be considered a hack? If you have a nexus repository, for
example, you couldn't realistically do that solution with existing jars.
First, there are too many. Second, and more importantly, you wouldn't want
to change the binaries to add module-info.class because it will change the
calculated checksums and disagree with the checksum published along the
libraries. You could do this privately to your own copies, sure, but why
would you? External metadata is a way better solution than this.
On Jul 10, 2016 4:42 PM, "Remi Forax" <forax at univ-mlv.fr> wrote:
> Hi Antoine,
> you were sleeping during my presentation at last Devoxx FR :)
> The issue is that an automatic jar can access to the classpath while a
> modular jar can not,
> so if jlink allows automatic modules, you may have surprising
> NoClassDefNotError at runtime ruining the whole idea of jigsaw.
> A simple workaround is to use jdep -geninfo on the automatic jar to
> generate a module-info.java, compile it with javac and inject it into the
> jar with a jar --update.
> see https://www.youtube.com/watch?v=a8xnnR3Bz6w&feature=youtu.be&t=2570
> (in french)
> ----- Mail original -----
> > De: "Antoine Sabot-Durand" <antoine at sabot-durand.net>
> > À: jigsaw-dev at openjdk.java.net
> > Envoyé: Dimanche 10 Juillet 2016 22:40:57
> > Objet: Jlink and automatic module
> > Hi All,
> > I encounter the same problem than Sander in  regarding automatic
> > and Jlink.
> > My project has a lot of modules and uses a lot of dependencies (Java EE
> > spec and impls) so it took me a few days to walk thru the writing of all
> > module-info.java files. hopefully I only found 2 automatics modules from
> > 3rd parties that had split packages and propose PR to these project to
> > correct these, in the meantime I use personal snapshot version for my
> > compilation.
> > At the end everything compiled fine without using classpath, but how
> > frustrating it was to discover that I was unable to use Jlink because of
> > this automatic module limitation.
> > If you put my experience in perspective, it means that if you depend on
> > tens of dependencies you'll have to wait months, even years before other
> > projects decide to switch to JDK9 letting use use this great Jlink
> > IMO, if this limitation is not solved it may reatard jdk9 adoption on a
> > of projects. I guess it's easier to say than do, but having a solution to
> > externally add meta-data to these automatic modules (an kind of external
> > module-info.class) could be doable for a more advance bridge approach.
> > Anyway, thanks for all the great work and your feedback.
> > Antoine Sabot-Durand
> > 
More information about the jigsaw-dev