It's described in the JavaDoc of ModuleFinder#of(): http://download.java.net/java/jdk9/docs/api/java/lang/module/ModuleFinder.html#of-java.nio.file.Path...-
Not sure whether there's another more authoritative source. 2017-04-26 10:08 GMT+02:00 Cédric Champeau <cedric.champ...@gmail.com>: > Is there a specification of how the automatic module name is built? I'm > asking because we will likely have to do something like that in Gradle, and > we cannot use JDK 9 specific APIs for this (Gradle can run on JDK 8, for > example, while the compiler would be forked to use JDK 9, so JDK 9 APIs may > not be available). > > 2017-04-25 22:03 GMT+02:00 Gunnar Morling <gun...@hibernate.org>: > >> Right; I find the usage of findAll() + findFirst() not perfect, >> though, given it's about a single JAR file to begin with. Hence the >> suggestion of a dedicated method for that case. But I'll go with your >> suggestion for now. Thanks again. >> >> --Gunnar >> >> >> 2017-04-25 10:03 GMT+02:00 Remi Forax <fo...@univ-mlv.fr>: >> > If you want an Optional, you can use findFirst() on a stream, >> > Optional<ModuleReference> ref = ModuleFinder.of( jar >> ).findAll().stream().findFirst(); >> > >> > Rémi >> > >> > ----- Mail original ----- >> >> De: "Gunnar Morling" <gun...@hibernate.org> >> >> À: "Alan Bateman" <alan.bate...@oracle.com> >> >> Cc: "jigsaw-dev" <jigsaw-dev@openjdk.java.net> >> >> Envoyé: Mardi 25 Avril 2017 09:10:45 >> >> Objet: Re: Getting the automatic module name of non-modular JAR >> > >> >> I see; thanks, Alan. >> >> >> >> I wanted to avoid using a regex or similar, in order to make sure the >> >> JDK's own automatic naming rules are applied instead of >> >> "re-implementing" them. I was kinda hoping for a method like >> >> >> >> Path jar = ...; >> >> Optional<ModuleReference> ref = ModuleReference.of( jar ); >> >> >> >> >> >> 2017-04-25 8:49 GMT+02:00 Alan Bateman <alan.bate...@oracle.com>: >> >>> On 24/04/2017 21:23, Gunnar Morling wrote: >> >>> >> >>>> Hi, >> >>>> >> >>>> Given a non-modular JAR (e.g. represented as Path), what's the easiest >> >>>> way to obtain the automatic module name derived for this JAR? >> >>> >> >>> If you just want the name then it might be more efficient to do it >> with a >> >>> regular expression. >> >>> >> >>>> >> >>>> I found the following: >> >>>> >> >>>> Path nonModularJar = ...; >> >>>> String automaticModuleName = ModuleFinder.of( nonModularJar ) >> >>>> .findAll() >> >>>> .iterator() >> >>>> .next() >> >>>> .descriptor() >> >>>> .name(); >> >>>> >> >>>> Is this the best I can do? >> >>>> >> >>>> More generally speaking, is using ModuleFinder with a single path the >> >>>> only way to obtain a ModuleReference/ModuleDescriptor for a specific >> >>>> JAR? >> >>> >> >>> Yes, ModuleFinder is the only way (it might be more succulent to use >> stream >> >>> + findFirst but that is just detail). If you are only interested in >> the name >> >>> then you could of course open the JAR file. If it contains >> module-info.class >> >>> then read it with ModuleDescriptor.read, otherwise use a regex to >> derive the >> >>> name. >> >>> >> >> > -Alan >>