Re: Help with classloader and NullPointerException
Ah my own bad, apparently some SwingX library code requires
UIManager.setLookAndFeel to have been called.
/Casper
Casper Bang wrote:
I have an application which I would like to have the ability to restart
itself and thus flush all singletons, cached resources etc. I thought I
could do this by starting a new application instance dynamically with a
new custom classloader:
if(JOptionPane.showConfirmDialog(this.getMainFrame(), "Restart?",
"Restart?", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION)
{
ClassLoader classLoader = new CustomClassLoader();
Class app = classLoader.loadClass("ActualApplication");
Class[] classArray = { String[].class};
Object[] stringArray = { new String[]{""}};
Method method = app.getMethod("main", classArray);
method.invoke(null, stringArray);
}
However, when my ActualApplication is invoked for the second time (when
trying to restart) I get NullPointerExceptions from various library
code, most noticably java.lang.Class.forName(Class.java:169) where it
makes a call to ClassLoader.getCallerClassLoader().
I guess I am missing something here, what I don't understand is how come
its only at consecutive runs my application it fails. My
CustomClassLoader is simply:
public class CustomClassLoader extends ClassLoader
{
public CustomClassLoader()
{
super(CustomClassLoader.class.getClassLoader());
}
}
Any pointers greatly appreciated.
/Casper