Getting the automatic module name of non-modular JAR
Gunnar Morling
gunnar at hibernate.org
Tue Apr 25 07:10:45 UTC 2017
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.Bateman at 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
More information about the jigsaw-dev
mailing list