зеркало из https://github.com/mono/ikvm-fork.git
Moved jar inspection into a separate method, to avoid loading the JarFile type unless necessary.
This commit is contained in:
Родитель
2ce813b790
Коммит
97e3708ecc
|
@ -302,27 +302,11 @@ public class Starter
|
|||
string[] vmargs = Startup.glob(vmargsIndex);
|
||||
if (jar)
|
||||
{
|
||||
JarFile jf = new JarFile(mainClass);
|
||||
try
|
||||
{
|
||||
Manifest manifest = jf.getManifest();
|
||||
if(manifest == null)
|
||||
{
|
||||
Console.Error.WriteLine("Jar file doesn't contain manifest");
|
||||
return 1;
|
||||
}
|
||||
mainClass = manifest.getMainAttributes().getValue(Attributes.Name.MAIN_CLASS);
|
||||
}
|
||||
finally
|
||||
{
|
||||
jf.close();
|
||||
}
|
||||
mainClass = GetMainClassFromJarManifest(mainClass);
|
||||
if (mainClass == null)
|
||||
{
|
||||
Console.Error.WriteLine("Manifest doesn't contain a Main-Class.");
|
||||
return 1;
|
||||
}
|
||||
mainClass = mainClass.Replace('/', '.');
|
||||
}
|
||||
java.lang.Class clazz = java.lang.Class.forName(mainClass, true, java.lang.ClassLoader.getSystemClassLoader());
|
||||
try
|
||||
|
@ -379,6 +363,31 @@ public class Starter
|
|||
return 1;
|
||||
}
|
||||
|
||||
private static string GetMainClassFromJarManifest(string mainClass)
|
||||
{
|
||||
JarFile jf = new JarFile(mainClass);
|
||||
try
|
||||
{
|
||||
Manifest manifest = jf.getManifest();
|
||||
if (manifest == null)
|
||||
{
|
||||
Console.Error.WriteLine("Jar file doesn't contain manifest");
|
||||
return null;
|
||||
}
|
||||
mainClass = manifest.getMainAttributes().getValue(Attributes.Name.MAIN_CLASS);
|
||||
}
|
||||
finally
|
||||
{
|
||||
jf.close();
|
||||
}
|
||||
if (mainClass == null)
|
||||
{
|
||||
Console.Error.WriteLine("Manifest doesn't contain a Main-Class.");
|
||||
return null;
|
||||
}
|
||||
return mainClass.Replace('/', '.');
|
||||
}
|
||||
|
||||
private static Method FindMainMethod(java.lang.Class clazz)
|
||||
{
|
||||
// HACK without this hack, clazz.getDeclaredMethods would throw a NoClassDefFoundError if any
|
||||
|
|
Загрузка…
Ссылка в новой задаче