aboutsummaryrefslogtreecommitdiff
path: root/nailgun_launcher
diff options
context:
space:
mode:
Diffstat (limited to 'nailgun_launcher')
-rw-r--r--nailgun_launcher/NailgunLauncher.java44
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(