diff options
Diffstat (limited to 'nailgun_launcher')
-rw-r--r-- | nailgun_launcher/NailgunLauncher.java | 44 |
1 files changed, 29 insertions, 15 deletions
diff --git a/nailgun_launcher/NailgunLauncher.java b/nailgun_launcher/NailgunLauncher.java index 1007343..c909c12 100644 --- a/nailgun_launcher/NailgunLauncher.java +++ b/nailgun_launcher/NailgunLauncher.java @@ -65,21 +65,35 @@ public class NailgunLauncher{ false, start, cache, CBT_HOME, compatibilityTarget, classLoaderCache ); - System.exit( - (Integer) res - .classLoader - .loadClass("cbt.Stage1") - .getMethod( - "run", - String[].class, File.class, File.class, Boolean.class, - File.class, Long.class, ConcurrentHashMap.class, ConcurrentHashMap.class - ) - .invoke( - null, - (Object) args, new File(cache), new File(CBT_HOME), res.changed, - new File(compatibilityTarget), start, classLoaderCache.keys, classLoaderCache.values - ) - ); + try{ + System.exit( + (Integer) res + .classLoader + .loadClass("cbt.Stage1") + .getMethod( + "run", + String[].class, File.class, File.class, Boolean.class, + File.class, Long.class, ConcurrentHashMap.class, ConcurrentHashMap.class + ) + .invoke( + null, + (Object) args, new File(cache), new File(CBT_HOME), res.changed, + new File(compatibilityTarget), start, classLoaderCache.keys, classLoaderCache.values + ) + ); + } catch (Exception e) { + Throwable t = unwrapInvocationTargetException(e); + t.printStackTrace(); + System.exit(1); + } + } + + public static Throwable unwrapInvocationTargetException(Throwable e){ + if(e instanceof java.lang.reflect.InvocationTargetException){ + return unwrapInvocationTargetException(((java.lang.reflect.InvocationTargetException) e).getCause()); + } else{ + return e; + } } public static BuildStage1Result buildStage1( |