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