15 internal static class JarFileExtensions
23 public static ModuleInfo GetModuleInfo(
this JarFile jar)
26 throw new ArgumentNullException(nameof(jar));
28 return GetModuleInfoFromClass(jar) ?? GetModuleInfoFromManifest(jar);
36 static ModuleInfo GetModuleInfoFromClass(JarFile jar)
39 throw new ArgumentNullException(nameof(jar));
41 var e = jar.GetEntry(
"module-info.class");
45 using var s = e.Value.Open();
46 using var c = ClassFile.Read(s);
47 var m = ModuleDescriptor.Read(c);
48 return new ModuleInfo(m.Name, m.Version);
56 static ModuleInfo GetModuleInfoFromManifest(JarFile jar)
58 if (jar.Manifest is
null)
61 return new ModuleInfo(jar.Manifest.MainAttributes.TryGetValue(
"Automatic-Module-Name", out var name) ? name :
null,
default);