Don't use a separate thread in the launcher to call app's main method

Using a separate thread to call the application's main method is
unnecessary – the context class loader of the current thread can be
updated instead – and makes exception and exit code handling more
complicated than it needs to be.

This commit updates the Launcher so that it calls the main method
runner using the current (main) thread. As a result, any exception
that's thrown will be caught by the JVM and result in a non-zero exit
code being returned from the process.

Closes gh-5922
pull/5887/merge
Andy Wilkinson 9 years ago
parent 7fb545d26c
commit e561cc1997

@ -100,10 +100,8 @@ public abstract class Launcher {
protected void launch(String[] args, String mainClass, ClassLoader classLoader)
throws Exception {
Runnable runner = createMainMethodRunner(mainClass, args, classLoader);
Thread runnerThread = new Thread(runner);
runnerThread.setContextClassLoader(classLoader);
runnerThread.setName(Thread.currentThread().getName());
runnerThread.start();
Thread.currentThread().setContextClassLoader(classLoader);
runner.run();
}
/**

Loading…
Cancel
Save