R
Ramon F Herrera
This question would be best answered by somebody with a knowledge of
component based programming methodologies, such as COM, CORBA or the
UNO newcomer; as implemented in Java, of course.
This comes from one of the tutorial examples contained in the
OpenOffice SDK.
I discovered that if I remove the code below, the sample program still
works properly, while being run from inside Eclise or NetBeans. I
removed the code and forgot all about it.
Some time later, I realized that the program didn't run standalone,
from the Unix or Windows shell/CLI, or by double click. So, I put the
chunk of code back, and voila! the program works fine now.
I could try reading the OO developer manual and following the code,
but I am sure some expert out there can give a better explanation.
This whole component based approach looks very intriguing, but somehow
counterintuitive, at least to me.
Thanks for sharing your insight...
-Ramon
-----------------------------------------
ClassLoader loader = ClassLoader.getSystemClassLoader();
if (loader instanceof URLClassLoader) {
URLClassLoader cl = (URLClassLoader)loader;
Class sysclass = URLClassLoader.class;
try {
Method method = sysclass.getDeclaredMethod("addURL", new
Class[]{URL.class});
method.setAccessible(true);
method.invoke(cl, new Object[]{new
File(ooBaseDirectory).toURL()});
} catch (Throwable t) {
t.printStackTrace();
throw new IOException("Error, could not add URL to
system classloader");
}
} else {
System.out.println("Error occured, URLClassLoader expected
but " +
loader.getClass() + " received. Could not continue.");
}
component based programming methodologies, such as COM, CORBA or the
UNO newcomer; as implemented in Java, of course.
This comes from one of the tutorial examples contained in the
OpenOffice SDK.
I discovered that if I remove the code below, the sample program still
works properly, while being run from inside Eclise or NetBeans. I
removed the code and forgot all about it.
Some time later, I realized that the program didn't run standalone,
from the Unix or Windows shell/CLI, or by double click. So, I put the
chunk of code back, and voila! the program works fine now.
I could try reading the OO developer manual and following the code,
but I am sure some expert out there can give a better explanation.
This whole component based approach looks very intriguing, but somehow
counterintuitive, at least to me.
Thanks for sharing your insight...
-Ramon
-----------------------------------------
ClassLoader loader = ClassLoader.getSystemClassLoader();
if (loader instanceof URLClassLoader) {
URLClassLoader cl = (URLClassLoader)loader;
Class sysclass = URLClassLoader.class;
try {
Method method = sysclass.getDeclaredMethod("addURL", new
Class[]{URL.class});
method.setAccessible(true);
method.invoke(cl, new Object[]{new
File(ooBaseDirectory).toURL()});
} catch (Throwable t) {
t.printStackTrace();
throw new IOException("Error, could not add URL to
system classloader");
}
} else {
System.out.println("Error occured, URLClassLoader expected
but " +
loader.getClass() + " received. Could not continue.");
}