Fixed regression introduced in 7.0 that caused the manifest to be ignored when creating the Package objects.

This commit is contained in:
jfrijters 2012-05-23 09:09:23 +00:00
Родитель fdd8a0fb40
Коммит eb146fb371
2 изменённых файлов: 21 добавлений и 1 удалений

Просмотреть файл

@ -91,6 +91,8 @@ public final class AssemblyClassLoader extends ClassLoader
@Internal
public static native String[] GetPackages(Assembly assembly);
private static native URL GetManifest(Assembly assembly);
private synchronized void lazyDefinePackagesCheck()
{
if(!packagesDefined)
@ -120,7 +122,11 @@ public final class AssemblyClassLoader extends ClassLoader
{
if(assembly != null)
{
return new Manifest(gnu.java.net.protocol.ikvmres.Handler.readResourceFromAssembly(assembly, "/META-INF/MANIFEST.MF"));
URL url = GetManifest(assembly);
if (url != null)
{
return new Manifest(url.openStream());
}
}
}
catch (MalformedURLException _)

Просмотреть файл

@ -234,6 +234,20 @@ namespace IKVM.NativeCode.ikvm.runtime
}
}
public static global::java.net.URL GetManifest(Assembly assembly)
{
#if FIRST_PASS
return null;
#else
IKVM.Internal.AssemblyClassLoader wrapper = IKVM.Internal.AssemblyClassLoader.FromAssembly(assembly);
foreach (global::java.net.URL url in wrapper.FindResources("META-INF/MANIFEST.MF"))
{
return url;
}
return null;
#endif
}
public static global::java.net.URL getResource(global::java.lang.ClassLoader classLoader, Assembly assembly, string name)
{
#if FIRST_PASS