Hallo!
Es geht um folgende Methode:
Im Detail interessiert mich wie ich hierbei vorgehen soll:
Sprich was für eine Exception soll ich hierbei werfen bzw gibt es eine oder muss ich eine eigene schreiben?
mfg
Es geht um folgende Methode:
Code:
/**
* load an external jar libary to get a class which implements <code>#{@link ITrackParser}</code>
*/
public void loadExternalLibary() {
URL jarURL = null;
try {
jarURL = new File(this.path + this.jar).toURL();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
if (classLoader != null && (classLoader instanceof URLClassLoader)) {
URLClassLoader urlClassLoader = (URLClassLoader) classLoader;
Method addURL = null;
try {
addURL = URLClassLoader.class.getDeclaredMethod("addURL", new Class[]{URL.class});
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
addURL.setAccessible(true);
try {
addURL.invoke(urlClassLoader, new Object[]{jarURL});
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Class c = null;
try {
c = classLoader.loadClass(this.className);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (!ITrackParser.class.isAssignableFrom(c)) {
/* class does not implement needed interface */
try {
throw new Exception("external class " + this.className + " does not implement needed "
+ ITrackParser.class);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/* instantiate this track parser variable */
try {
this.itrackParser = (ITrackParser) c.newInstance();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Im Detail interessiert mich wie ich hierbei vorgehen soll:
Code:
if (!ITrackParser.class.isAssignableFrom(c)) {
/* class does not implement needed interface */
try {
throw new Exception("external class " + this.className + " does not implement needed "
+ ITrackParser.class);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Sprich was für eine Exception soll ich hierbei werfen bzw gibt es eine oder muss ich eine eigene schreiben?
mfg